ICP Ledger Canister Suite Upgrades 2024-12-13

The Financial Integrations team has submitted the following proposals today, 2024-12-13 for upgrading the ICP Ledger canister suite. DFINITY plans to vote on these proposals on Monday.

ICP index (proposal 134489):

Proposal to upgrade the ICP index canister

Repository: https://github.com/dfinity/ic.git

Git hash: 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba

New compressed Wasm hash: 7b884231f230f5fc66ad18e0baaec0c14921bd5da742db5dbaf51f824b8dfc63

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

Target canister: qhbym-qaaaa-aaaaa-aaafq-cai

Previous ICP index proposal: https://dashboard.internetcomputer.org/proposal/133945


Motivation

Rename memory-related metrics.

Upgrade args

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
cd rs/ledger_suite/icp/index
didc encode '()' | xxd -r -p | sha256sum

Release Notes

git log --format='%C(auto) %h %s' dac2f36f96d7549d82fa8e3c714979255ce57afd..7c6309cb5bec7ab28ed657ac7672af08a59fc1ba -- packages/icrc-ledger_types rs/ledger_suite/icp/index rs/ledger_suite/icp/src rs/ledger_suite/common/ledger_canister_core/src rs/ledger_suite/common/ledger_core rs/rust_canisters/http_types rs/rust_canisters/canister_log
b006ae9934 feat(ICP-ledger): FI-1438: Implement V3 for ICP ledger - migrate allowances to stable structures (#2818)
70e0e45383 test(IDX): increase timeout to 15m for the ic_icp_index_test (#3112)
139f085194 test(ICP_Ledger): FI-1506: Increase CPU reservation for flaky ICP ledger and index tests (#3033)
e369646b76 fix: Use default rust edition instead of specifying it in the BUILD rules (#3047)
6297358538 test(ICP_Ledger): FI-1531: Use InMemoryLedger in ICP golden state test (#2768)
8d726cc67a feat(ICRC-ledger): FI-1437: Implement V3 for ICRC ledger - migrate allowances to stable structures (#1513)
6da35b9432 refactor: [FI-1531] Support ICP blocks and accounts in InMemoryLedger (#2497)
2b21236228 refactor(ICP_ledger): FI-1570: Rename ledger suite memory-related metrics (#2545)
b75dd87eab chore: do not use time of next round in tests (#2455)

Wasm Verification

Verify that the hash of the gzipped WASM matches the proposed hash.

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
"./ci/container/build-ic.sh" "--canisters"
sha256sum ./artifacts/canisters/ic-icp-index-canister.wasm.gz

ICP ledger (proposal 134492):

Proposal to upgrade the ICP ledger canister

Repository: https://github.com/dfinity/ic.git

Git hash: 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba

New compressed Wasm hash: a9ed1cb9dda555e0fc1038825eb7b3a6b366f17aa4b88575184c7537e864e551

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

Target canister: ryjl3-tyaaa-aaaaa-aaaba-cai

Previous ICP ledger proposal: https://dashboard.internetcomputer.org/proposal/133946


Motivation

Rename memory-related metrics, migrate allowances to stable structures.

Upgrade args

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
cd rs/ledger_suite/icp
didc encode '()' | xxd -r -p | sha256sum

Release Notes

git log --format='%C(auto) %h %s' dac2f36f96d7549d82fa8e3c714979255ce57afd..7c6309cb5bec7ab28ed657ac7672af08a59fc1ba -- packages/icrc-ledger_types rs/ledger_suite/icp/ledger/src rs/ledger_suite/icp/src rs/ledger_suite/common/ledger_canister_core/src rs/ledger_suite/common/ledger_core/src
b006ae9934 feat(ICP-ledger): FI-1438: Implement V3 for ICP ledger - migrate allowances to stable structures (#2818)
d09d631545 chore(ICP_Ledger): Fix ICP ledger heap memory bytes metric comment (#2993)
8d726cc67a feat(ICRC-ledger): FI-1437: Implement V3 for ICRC ledger - migrate allowances to stable structures (#1513)
6da35b9432 refactor: [FI-1531] Support ICP blocks and accounts in InMemoryLedger (#2497)
2b21236228 refactor(ICP_ledger): FI-1570: Rename ledger suite memory-related metrics (#2545)

Wasm Verification

Verify that the hash of the gzipped WASM matches the proposed hash.

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
"./ci/container/build-ic.sh" "--canisters"
sha256sum ./artifacts/canisters/ledger-canister_notify-method.wasm.gz

ICP archive1 (proposal 134493):

Proposal to upgrade the ICP archive1 canister

Repository: https://github.com/dfinity/ic.git

Git hash: 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba

New compressed Wasm hash: 92622a35dc03651a046ef02d48c3d3c3383a25307d719e4a7657601486fa9f4f

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

Target canister: qjdve-lqaaa-aaaaa-aaaeq-cai

Previous ICP archive1 proposal: https://dashboard.internetcomputer.org/proposal/133947


Motivation

Rename memory-related metrics.

Upgrade args

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
cd rs/ledger_suite/icp
didc encode '()' | xxd -r -p | sha256sum

Release Notes

git log --format='%C(auto) %h %s' dac2f36f96d7549d82fa8e3c714979255ce57afd..7c6309cb5bec7ab28ed657ac7672af08a59fc1ba -- packages/icrc-ledger_types rs/ledger_suite/icp/archive rs/ledger_suite/icp/src rs/ledger_suite/common/ledger_canister_core rs/ledger_suite/common/ledger_core
b006ae9934 feat(ICP-ledger): FI-1438: Implement V3 for ICP ledger - migrate allowances to stable structures (#2818)
8d726cc67a feat(ICRC-ledger): FI-1437: Implement V3 for ICRC ledger - migrate allowances to stable structures (#1513)
593f0cd19c chore(FI): Cleanup unused dependencies (#2628)
6da35b9432 refactor: [FI-1531] Support ICP blocks and accounts in InMemoryLedger (#2497)
2b21236228 refactor(ICP_ledger): FI-1570: Rename ledger suite memory-related metrics (#2545)

Wasm Verification

Verify that the hash of the gzipped WASM matches the proposed hash.

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
"./ci/container/build-ic.sh" "--canisters"
sha256sum ./artifacts/canisters/ledger-archive-node-canister.wasm.gz

ICP archive2 (proposal 134494):

Proposal to upgrade the ICP archive2 canister

Repository: https://github.com/dfinity/ic.git

Git hash: 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba

New compressed Wasm hash: 92622a35dc03651a046ef02d48c3d3c3383a25307d719e4a7657601486fa9f4f

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

Target canister: qsgjb-riaaa-aaaaa-aaaga-cai

Previous ICP archive2 proposal: https://dashboard.internetcomputer.org/proposal/133948


Motivation

Rename memory-related metrics.

Upgrade args

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
cd rs/ledger_suite/icp
didc encode '()' | xxd -r -p | sha256sum

Release Notes

git log --format='%C(auto) %h %s' dac2f36f96d7549d82fa8e3c714979255ce57afd..7c6309cb5bec7ab28ed657ac7672af08a59fc1ba -- packages/icrc-ledger_types rs/ledger_suite/icp/archive rs/ledger_suite/icp/src rs/ledger_suite/common/ledger_canister_core rs/ledger_suite/common/ledger_core
b006ae9934 feat(ICP-ledger): FI-1438: Implement V3 for ICP ledger - migrate allowances to stable structures (#2818)
8d726cc67a feat(ICRC-ledger): FI-1437: Implement V3 for ICRC ledger - migrate allowances to stable structures (#1513)
593f0cd19c chore(FI): Cleanup unused dependencies (#2628)
6da35b9432 refactor: [FI-1531] Support ICP blocks and accounts in InMemoryLedger (#2497)
2b21236228 refactor(ICP_ledger): FI-1570: Rename ledger suite memory-related metrics (#2545)

Wasm Verification

Verify that the hash of the gzipped WASM matches the proposed hash.

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
"./ci/container/build-ic.sh" "--canisters"
sha256sum ./artifacts/canisters/ledger-archive-node-canister.wasm.gz

ICP archive3 (proposal 134495):

Proposal to upgrade the ICP archive3 canister

Repository: https://github.com/dfinity/ic.git

Git hash: 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba

New compressed Wasm hash: 92622a35dc03651a046ef02d48c3d3c3383a25307d719e4a7657601486fa9f4f

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

Target canister: q4eej-kyaaa-aaaaa-aaaha-cai

Previous ICP archive3 proposal: https://dashboard.internetcomputer.org/proposal/133949


Motivation

Rename memory-related metrics.

Upgrade args

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
cd rs/ledger_suite/icp
didc encode '()' | xxd -r -p | sha256sum

Release Notes

git log --format='%C(auto) %h %s' dac2f36f96d7549d82fa8e3c714979255ce57afd..7c6309cb5bec7ab28ed657ac7672af08a59fc1ba -- packages/icrc-ledger_types rs/ledger_suite/icp/archive rs/ledger_suite/icp/src rs/ledger_suite/common/ledger_canister_core rs/ledger_suite/common/ledger_core
b006ae9934 feat(ICP-ledger): FI-1438: Implement V3 for ICP ledger - migrate allowances to stable structures (#2818)
8d726cc67a feat(ICRC-ledger): FI-1437: Implement V3 for ICRC ledger - migrate allowances to stable structures (#1513)
593f0cd19c chore(FI): Cleanup unused dependencies (#2628)
6da35b9432 refactor: [FI-1531] Support ICP blocks and accounts in InMemoryLedger (#2497)
2b21236228 refactor(ICP_ledger): FI-1570: Rename ledger suite memory-related metrics (#2545)

Wasm Verification

Verify that the hash of the gzipped WASM matches the proposed hash.

git fetch
git checkout 7c6309cb5bec7ab28ed657ac7672af08a59fc1ba
"./ci/container/build-ic.sh" "--canisters"
sha256sum ./artifacts/canisters/ledger-archive-node-canister.wasm.gz
1 Like

ICP index canister - Proposal Review 134489

Target canister qhbym-qaaaa-aaaaa-aaafq-cai is indeed the index canister, install mode is correct.

Build hash is reproducible.
Screenshot 2024-12-14 at 14.57.51

Args are correct and reproducible.
Screenshot 2024-12-14 at 14.58.25

In depth-review

This patch simplifies the codebase, refines APIs, and standardizes serialization, but introduces breaking changes that need careful validation. Key changes include removing approval trimming logic, renaming total_memory_size_bytes to heap_memory_size_bytes, and implementing Storable for key structures. These changes improve clarity and consistency but risk unintended regressions.

  1. heap_memory_size_bytes: Clearer naming, but breaking for dependents. Ensure all references are updated and the change is well-documented.
  2. Approval Logic Changes: Removing arrival_queue and select_approvals_to_trim simplifies the code but shifts behavior. Confirm this won’t cause scalability or performance issues in systems with large approval sets.
  3. Serialization Updates: Storable for AccountIdentifier, TimeStamp, etc., is a good standardization move. Validate with edge-case tests (e.g., corrupted data).
2 Likes

ICP ledger canister - Proposal 134492

Target canister is correct ryjl3-tyaaa-aaaaa-aaaba-cai. Install mode is also correct.

The args 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e correspond indeed to an empty arg.

Screenshot 2024-12-14 at 15.02.05

In depth-review

This patch represents a significant upgrade to the ledger’s architecture, migrating from heap-based allowances to stable structures and introducing mechanisms for managing migrations during upgrades. It emphasizes backward compatibility and improved memory handling but introduces new complexity with features like StableAllowancesData.

  1. Stable Structures Migration: Moving allowances and expirations to stable memory ensures that data persists across upgrades without having to use the pre_upgrade hook. Migration steps (migrate_next_part) and state management (is_ready, set_ledger_state) add fault tolerance but require careful testing to handle edge cases (e.g., partial migrations or out-of-instructions scenarios).
  2. Breaking Changes:
  • Replacing HeapAllowancesData with StableAllowancesData changes how allowances are managed internally. This will impact all downstream systems relying on HeapAllowancesData.
  • The arrived_at field for approvals is now defaulted to 0. This could alter logic if any existing systems use this timestamp for validations.
  1. API Updates:
  • The addition of is_ledger_ready ensures external systems can query migration progress. This is a good safety feature but needs proper integration in all endpoints to avoid premature calls.
  • The panic_if_not_ready checks throughout endpoints are crucial but need testing to ensure they don’t cause unnecessary failures in live environments.
2 Likes

ICP archive1 canister - 134493

The target canister qjdve-lqaaa-aaaaa-aaaeq-cai is correct, install mode is also correct.

Upgrade args 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e correspond to an empty args.

Archive build is reproducible.

Screenshot 2024-12-14 at 15.09.07

ICP archive2 canister - 134494

The target canister qsgjb-riaaa-aaaaa-aaaga-cai is correct, install mode is also correct.

Upgrade args 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e correspond to an empty args.

Archive build is reproducible.

Screenshot 2024-12-14 at 15.09.07

ICP archive3 canister - 134495

The target canister q4eej-kyaaa-aaaaa-aaaha-cai is correct, install mode is also correct.

Upgrade args 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e correspond to an empty args.

Archive build is reproducible.

Screenshot 2024-12-14 at 15.09.07


The archives just get an update on a metric name.

2 Likes

proposal - 134489

Vote: ADOPT

Reason:

Build completed successfully, hashes are verified, and commits match the changes described with the code implemented.

Hash Match: MATCH

Feedback:

Proposer Check: MATCH

Commits

b006ae9934
The ledger_core module removed functionality related to tracking and managing “arrival times” for approvals, including methods like insert_arrival, remove_arrival, and oldest_arrivals.

In the ledger/* modules, a migration system was added to move allowances and their expiration data into stable structures for persistence across upgrades, including multi-step migration logic and state management using the LedgerState enum.

70e0e45383
Add timeout to rust_ic_test.

139f085194
Increase CPU reservation for tests.

e369646b76
Removal of the edition = "2021" and edition = "2018" declarations from BUILD.bazel files for various Rust libraries, binaries, and test suites.

6297358538
Testing related intro of LedgerState management to verify balances, allowances, and parity between in-memory ledger states, ledger canisters, and archive/index data. This ensures consistency after transactions, upgrades, and downgrades.

8d726cc67a
System for migrating ledger allowances from in-memory storage to stable, persistent structures. Ensures that during upgrades, allowances and their expirations are transferred incrementally without running into instruction limits. They also prevent downgrades once the ledger relies on these new stable storage mechanisms.

6da35b9432
Restructuring test code, particularly in the state machine tests and related test suites. They introduce a generic AllowanceProvider trait, allowing tests to consistently query allowances regardless of token type, and a BlockConsumer trait to unify block processing across different ledgers.

2b21236228
Rename and clarify memory-related metrics to specifically report “heap memory” rather than “total memory.” The code now uses a heap_memory_size_bytes() function and updates metric names and descriptions to consistently measure and display only the heap memory usage.

b75dd87eab
Remove references to time_of_next_round() and replace them with explicit calls to env.time(), combined with manual env.advance_time(...) steps to ensure a stable, controlled progression of time in tests. This makes the tests more deterministic.


proposal - 134492

Vote: ADOPT

Reason:

Build completed successfully, hashes are verified, and most commits are duplicates. One diff commit matches description.

Hash Match: MATCH

Feedback: NONE

Proposer Check: MATCH

Commits

b006ae9934
DUPLICATE

d09d631545
Fix metric description for heap_memory_bytes.

8d726cc67a
DUPLICATE

6da35b9432
DUPLICATE

2b21236228
DUPLICATE


proposal - 134493

Vote: ADOPT

Reason:

Build completed successfully, hashes are verified, and most commits are duplicates. One diff commit matches description.

Hash Match: MATCH

Feedback: NONE

Proposer Check: MATCH

Commits

All DUPLICATES

[b006ae9934](https://github.com/dfinity/ic/commit/b006ae9934)  
[8d726cc67a](https://github.com/dfinity/ic/commit/8d726cc67a)  
[6da35b9432](https://github.com/dfinity/ic/commit/6da35b9432)  
[2b21236228](https://github.com/dfinity/ic/commit/2b21236228)

593f0cd19c
Remove and clean up unused or unnecessary dependencies from both Cargo.lock and various Cargo.toml and Bazel build files. ic-crypto-tree-hash, ic-ledger-hash-of, num-traits, and others no longer needed.


proposal - 134494

Vote: ADOPT

Reason:

Build completed successfully, hashes are verified, and commits are duplicates none to review.

Hash Match: MATCH

Feedback: NONE

Proposer Check: MATCH

Commits

All DUPLICATES

[b006ae9934](https://github.com/dfinity/ic/commit/b006ae9934)  
[8d726cc67a](https://github.com/dfinity/ic/commit/8d726cc67a)  
[593f0cd19c](https://github.com/dfinity/ic/commit/593f0cd19c)  
[6da35b9432](https://github.com/dfinity/ic/commit/6da35b9432)  
[2b21236228](https://github.com/dfinity/ic/commit/2b21236228)

proposal - 134495

Vote: ADOPT

Reason:

Build completed successfully, hashes are verified, and commits are duplicates none to review.

Hash Match: MATCH

Feedback: NONE

Proposer Check: MATCH

Commits

All DUPLICATES

[b006ae9934](https://github.com/dfinity/ic/commit/b006ae9934)  
[8d726cc67a](https://github.com/dfinity/ic/commit/8d726cc67a)  
[593f0cd19c](https://github.com/dfinity/ic/commit/593f0cd19c)  
[6da35b9432](https://github.com/dfinity/ic/commit/6da35b9432)  
[2b21236228](https://github.com/dfinity/ic/commit/2b21236228)
2 Likes

Proposal #134489 ICP index canister

Vote: Adopted.
Reason: Builds fine and both hashes for the WASM and arguments matches, as do all the listed commits.

2 Likes

Proposal #134492 ICP ledger canister

Vote: Adopted.
Reason: Builds fine and both hashes for the WASM and arguments matches, as do all the listed commits.

1 Like

Proposal #134493 ICP archive1 canister

Vote: Adopted
Reason: Builds fine and both hashes for the WASM and arguments matches, as do all the listed commits

Proposal #134494 ICP archive2 canister

Vote: Adopted
Reason: Builds fine and both hashes for the wasm and arguments matches, as do all the listed commits.

Same as Archive1.

Proposal #134495 ICP archive3 canister

Vote: Adopted
Reason: Builds fine and both hashes for the wasm and arguments matches, as do all the listed commits.

Same as Archive1.

1 Like

Proposal 134489

Vote: ADOPT

Reason:
Build successful and hashes match, commits look great and match the description. Found no issues.

[b006ae9934]: Migrates allowances ALLOWANCES_MEMORY and expirations ALLOWANCES_EXPIRATIONS_MEMORY to stable structures StableBTreeMap through migrate_one_allowance and migrate_one_expiration. The StableAllowancesData struct was introduced to provide an abstraction for the allowance data with the AllowancesData trait.

[70e0e45383]: Increases the timeout for the ic_icp_index_test to 15 minutes since before it would occasionally timeout after 5 minutes.

[139f085194]: Improve flakiness of ICP ledger and index tests by increasing the CPU reservation.

[e369646b76]: Removes the explicit specification of the Rust edition in BUILD.bazel files to instread use the default Rust edition.

[6297358538]: Introduces the LedgerState and uses InMemoryLedger to track the ledger state. Keeps an in-memory copy of blocks and allowances and verifies parity between in memory state and the ledger, archive and index canisters.

[8d726cc67a]: Introduces migration logic for transitioning from in-memory structures for allowances to stable memory ones. The migration process is divided into steps STABLE_UPGRADE_MIGRATION_STEPS to avoid exceeding instructions limits. The migration logic also prevents downgrading to incompatible older versions through basic if conditions.

[6da35b9432]: Refactors the InMemoryLedger to support both ICP and ICRC1 tokens and accounts mostly by introducing abstractions in the handling of accounts and tokens through types. Then generic traits such as AllowanceProvider that can be used to query allowances independent on the Ledger the Accounts is in and BlockConsumer that abracts the BlockType and provided the logic to process ledger blocks with the known operations Mint, Transfer, Burn and Approve.

[2b21236228]: Renames several heap and stable memory related metrics in order to use a general alert for canisters that export the same metrics under the same name. e.g archive_node_stable_memory_bytes is renamed to stable_memory_bytes removing the archive_ prefix to make it general.

[b75dd87eab]: Replaces a query for the time of the next round env.time_of_next_round() with advacing time implicitly env.advance_time(Duration::from_secs(1)) and then retrieving it. This makes the StateMachine more deterministic and simplifies the API not longer relying in redudant methods like time_of_next_round and get_time_of_next_round.

Proposal 134492

Vote: ADOPT

Reason:
Build successful and hashes match, commits look great and match the description. Found no issues.

Duplicates from proposal 134489.

[d09d631545]: Fix a comment on the heap memory bytes metric.

Proposal 134493

Vote: ADOPT

Reason:
Build successful and hashes match, commits look great and match the description. Found no issues.

Duplicates from proposal 134489.

[593f0cd19c]: Removed unused dependencies

Proposal 134494

Vote: ADOPT

image

Reason:
Build successful and hashes match, commits look great and match the description. Found no issues.

DUPLICATES

Proposal 134495

Vote: ADOPT

image

Reason:
Build successful and hashes match, commits look great and match the description. Found no issues.

DUPLICATES

1 Like

Proposal 134489

Vote: ADOPT
Reason: Build is successful and both code changes and hashes match.

8d726cc67a Extended Ledger struct with stable_approvals field and added logic to migrate allowances and expirations from heap to stable memory when upgrading from ledger version v0 to v1. To ensure the upgrade process doesn’t hit the instruction limit, the migration is performed in batches, this is done by calling migrate_next_part method “recursively” by scheduling a timer for the next round as soon as the instruction used reach the limit, this is set a bit higher when it is called initially by post_upgrade, since the hook allows more instructions to be used, subsequent calls made via timer have a lower limit. A new variable has been added to the ledger’s global state: LEDGER_STATE, this is an enum with 2 variants Migrating and Ready. While the migration process is taking place it is set to Migrating and access to some ledger functionality such as reading balances, allowances, initiating transactions or further upgrading the ledger is blocked. The state can be fetched by calling a new endpoint named is_ledger_ready. Changed Storable trait implementation for Account to use cbor instead of manually handling the serialization. AllowancesData trait has new methods: pop_first_allowance and clear_arrivals, they are used to facilitate the migration and are only actually implemented in HeapAllowancesData.

b006ae9934 Similar set of changes to 8d726cc67a, but for the ICP ledger.

70e0e45383 Increased timeout to 15 minutes for "ic_icp_index_test, by expicitly setting it to “long”.

139f085194 Reserve 4 cpu cores for ic_icp_index_test and ledger_canister_test tests.

e369646b76 Removed explicit declaration for rust edition in the BUILD rules.

6da35b9432 Refactor InMemoryLedger generalizing some of its methods into traits, which are then implemented for both ICRC and ICP ledger blocks.

6297358538 Switch to using the InMemoryLedger to verify balances and allowances in golden nns state tests and further generalize the InMemoryLedger by defining the BalanceProvider trait, which is implemented for Account and AccountIdentifier structs, and adding it to the definition of AccountId. This makes it possible to abstract away balance retrieval from verify_balances_and_allowances method.

2b21236228 Renamed and standardized metrics related to stable and heap memory usage for all ledger suite canisters.

b75dd87eab Deleted get_time_of_next_round method and changed time_of_next_round’s visibility to private. Updated tests to manually advance time by updating time field of the state machine.

1 Like

Proposal 134492

Vote: ADOPT
Reason: Build is successful and both code changes and hashes match.

d09d631545 Updated description of heap_memory_bytes metric.

Other commits are duplicates from 134489

Proposal 134493

Vote: ADOPT
Reason: Build is successful and both code changes and hashes match.

593f0cd19c Removed unused dependencies.

Other commits have already been reviewed.

Proposal 134494

Vote: ADOPT
Reason: Build is successful and both code changes and hashes match.

All commits have already been reviewed.

Proposal 134495

Vote: ADOPT
Reason: Build is successful and both code changes and hashes match.

All commits have already been reviewed.

1 Like