ICP Ledger Canister Suite Upgrades 2025-05-10

The Financial Integrations team has submitted the following proposals today, 2025-05-10 for upgrading the ICP Ledger canister suite. DFINITY plans to vote on these proposals on Tuesday.

ICP index (proposal 136583):

Proposal to upgrade the ICP index canister

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

Git hash: 195808c9119e1fd3685a82480c258596e0374009

New compressed Wasm hash: a0e00cc67e89da55ecfa9c91b9377a83fec4368b4096838c0cd19f88f0caed20

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

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

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


Motivation

  • Imports update

Upgrade args

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

Release Notes

git log --format='%C(auto) %h %s' 3ae3649a2366aaca83404b692fc58e4c6e604a25..195808c9119e1fd3685a82480c258596e0374009 -- 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
3490ef2a07 chore: bump the monorepo version of ic-cdk to 0.18.0 (#5005)
c2d5684360 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
d81ed737ae fix(Ledger): FI-1689: Return the archived ranges in order (#4651)
6973bac7af feat(Ledger_Canister_Core): FI-1689: Report ledger blocks in at most one location (#4264)

Wasm Verification

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

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

ICP ledger (proposal 136584):

Proposal to upgrade the ICP ledger canister

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

Git hash: 195808c9119e1fd3685a82480c258596e0374009

New compressed Wasm hash: 8e4903856f1a211707da72e92619903be60518d5137caaf1e52a41e6f0c3fe22

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

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

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


Motivation

  • Remove stable structures migration code
  • Report ledger blocks in at most one location
  • Imports update

Upgrade args

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

Release Notes

git log --format='%C(auto) %h %s' 3ae3649a2366aaca83404b692fc58e4c6e604a25..195808c9119e1fd3685a82480c258596e0374009 -- 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
c2d5684360 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
e669604b02 chore(ICP-Ledger): remove stable structures migration code (#4630)
d81ed737ae fix(Ledger): FI-1689: Return the archived ranges in order (#4651)
6973bac7af feat(Ledger_Canister_Core): FI-1689: Report ledger blocks in at most one location (#4264)

Wasm Verification

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

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

ICP archive1 (proposal 136585):

Proposal to upgrade the ICP archive1 canister

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

Git hash: 195808c9119e1fd3685a82480c258596e0374009

New compressed Wasm hash: f2f95d7c2c176f0addb11b5969e815c1fc926da34ce333249965a28b2463c994

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

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

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


Motivation

  • Imports update

Upgrade args

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

Release Notes

git log --format='%C(auto) %h %s' 3ae3649a2366aaca83404b692fc58e4c6e604a25..195808c9119e1fd3685a82480c258596e0374009 -- 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
3490ef2a07 chore: bump the monorepo version of ic-cdk to 0.18.0 (#5005)
c2d5684360 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
d81ed737ae fix(Ledger): FI-1689: Return the archived ranges in order (#4651)
6973bac7af feat(Ledger_Canister_Core): FI-1689: Report ledger blocks in at most one location (#4264)
4a10654fc4 chore(ICP-Archive): remove migration to stable structures code (#4478)

Wasm Verification

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

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

ICP archive2 (proposal 136586):

Proposal to upgrade the ICP archive2 canister

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

Git hash: 195808c9119e1fd3685a82480c258596e0374009

New compressed Wasm hash: f2f95d7c2c176f0addb11b5969e815c1fc926da34ce333249965a28b2463c994

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

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

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


Motivation

  • Imports update

Upgrade args

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

Release Notes

git log --format='%C(auto) %h %s' 3ae3649a2366aaca83404b692fc58e4c6e604a25..195808c9119e1fd3685a82480c258596e0374009 -- 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
3490ef2a07 chore: bump the monorepo version of ic-cdk to 0.18.0 (#5005)
c2d5684360 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
d81ed737ae fix(Ledger): FI-1689: Return the archived ranges in order (#4651)
6973bac7af feat(Ledger_Canister_Core): FI-1689: Report ledger blocks in at most one location (#4264)
4a10654fc4 chore(ICP-Archive): remove migration to stable structures code (#4478)

Wasm Verification

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

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

ICP archive3 (proposal 136587):

Proposal to upgrade the ICP archive3 canister

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

Git hash: 195808c9119e1fd3685a82480c258596e0374009

New compressed Wasm hash: f2f95d7c2c176f0addb11b5969e815c1fc926da34ce333249965a28b2463c994

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

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

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


Motivation

  • Imports update

Upgrade args

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

Release Notes

git log --format='%C(auto) %h %s' 3ae3649a2366aaca83404b692fc58e4c6e604a25..195808c9119e1fd3685a82480c258596e0374009 -- 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
3490ef2a07 chore: bump the monorepo version of ic-cdk to 0.18.0 (#5005)
c2d5684360 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
d81ed737ae fix(Ledger): FI-1689: Return the archived ranges in order (#4651)
6973bac7af feat(Ledger_Canister_Core): FI-1689: Report ledger blocks in at most one location (#4264)
4a10654fc4 chore(ICP-Archive): remove migration to stable structures code (#4478)

Wasm Verification

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

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

ICP archive4 (proposal 136588):

Proposal to upgrade the ICP archive4 canister

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

Git hash: 195808c9119e1fd3685a82480c258596e0374009

New compressed Wasm hash: f2f95d7c2c176f0addb11b5969e815c1fc926da34ce333249965a28b2463c994

Upgrade args hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e

Target canister: q3fc5-haaaa-aaaaa-aaahq-cai

Previous ICP archive4 proposal: https://dashboard.internetcomputer.org/proposal/136002


Motivation

  • Imports update

Upgrade args

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

Release Notes

git log --format='%C(auto) %h %s' 3ae3649a2366aaca83404b692fc58e4c6e604a25..195808c9119e1fd3685a82480c258596e0374009 -- 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
3490ef2a07 chore: bump the monorepo version of ic-cdk to 0.18.0 (#5005)
c2d5684360 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
d81ed737ae fix(Ledger): FI-1689: Return the archived ranges in order (#4651)
6973bac7af feat(Ledger_Canister_Core): FI-1689: Report ledger blocks in at most one location (#4264)
4a10654fc4 chore(ICP-Archive): remove migration to stable structures code (#4478)

Wasm Verification

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

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

Adopt proposal 136583

Proposal

  • Canister id is correct ICP index.
  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash is reproducible.

image

Code Review

[3490ef2a07]: bump monorepo ic-cdk to 0.18, ledger suite is pinned at 0.17.1
[c2d5684360]: Switch internal ic-canisters-http-types to the published equivalent ic-http-types.
[d81ed737ae]: Return the archived ranges in order.
[6973bac7af]: Report ledger blocks in at most one location.


Adopt proposal 136584

Proposal

  • Canister id is correct ledger.
  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash is reproducible.

image

Code Review

[c2d5684360]: Switch internal ic-canisters-http-types to the published equivalent ic-http-types.
[e669604b02]: Remove stable structures migration code.
[d81ed737ae]: Return the archived ranges in order.
[6973bac7af]: Report ledger blocks in at most one location. @mathiasb did you find any duplicated blocks?


Adopt archive1 proposal 136585

Adopt archive2 proposal 136586

Adopt archive3 proposal 136587

Adopt archive4 proposal 136588

Proposal

  • Canister id is correct ledger.
  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash is reproducible.

image

Code Review

[3490ef2a07]: bump monorepo ic-cdk to 0.18, while keeping the archive one to 0.17.
[c2d5684360]: Switch internal ic-canisters-http-types to the published equivalent ic-http-types.
[4a10654fc4]: Remove migration to stable structures code.

proposals - [136583, 136584, 136585, 136586, 136587, 136588] Cyberowl | CodeGov

Proposals:

136583


136584

136585

136586

136587

136588

Vote: ADOPT

Reason & Feedback:

I successfully built and verified the hash. All the commit descriptions match their code changes.

Checks:

Hash Verification: [MATCH, MATCH, MATCH, MATCH, MATCH, MATCH]
Target Canister: [MATCH, MATCH, MATCH, MATCH, MATCH, MATCH]
Proposer Check: [MATCH, MATCH, MATCH, MATCH, MATCH, MATCH]

Overall Summary:

Upgrade ic-cdk and ic-cdk-macros to version 0.18.0. Migrate to a centralized ic-http-types crate. Refactor ledger block range handling for clarity and correctness with enhanced range_utils functions and tests. Streamline the ledger and archive canisters by removing outdated multi-step migration logic

Commits Summary

proposal/136583

3490ef2a0
Bump ic-cdk and ic-cdk-macros to version 0.18.0 in the top-level Cargo.toml and external_crates.bzl.

c2d5684360
Migrated from the old ic-canisters-http-types in rs/rust_canisters/http_types into a centralized packages/ic-http-types crate.

d81ed737ae
Refactors the iteration logic by explicitly reversing the archive iteration order to process blocks from newest to oldest, collecting matching block ranges into a Vec, and then reversing the Vec to output blocks from oldest to newest.

6973bac7af
intersect now early-returns Err(NoIntersection) if either range is empty or disjoint. Refactor block_locations function to explicitly handle archived block ranges in reverse order, removing overlapping suffixes to ensure disjoint ranges, and adding a debug_assert to prevent range intersections.

proposal/136584

Commits [c2d5684360, d81ed737ae, 6973bac7af]
Same as proposal/136583

e669604b02
Replaces multiple legacy versions (v1/v2/v3) with a single prev-ledger-version feature and removing outdated migration logic, including LedgerState, multi-step migrations, and related metrics. Removes outdated migration logic.

proposal/136585

Commits [3490ef2a07, c2d5684360, d81ed737ae, 6973bac7af]
Same as proposal/136583

4a10654fc4
Removes the old “dfn_core”‐based state-replay migration from the archive canister and deletes the ArchiveNodeState and manual stable::get()/set() logic. The new #[post_upgrade] hook simply asserts that the memory manager is already installed, decodes an optional ArchiveUpgradeArgument, and applies only the max_memory_size_bytes override.

proposal/136586 & 136587 & 136588

Commits [3490ef2a07, c2d5684360, d81ed737ae, 6973bac7af]
Same as proposal/136583

Commit [4a10654fc4]
Same as proposal/136585

About CodeGov

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these technical topics. We also have a group of Followees who vote independently on the Governance and the SNS & Neuron’s Fund topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron, KongSwap, and Alice with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

No, we did not find any cases where the ledger had reported a block in multiple locations.

2 Likes

Proposal 136583 – LaCosta | CodeGov

Vote: ADOPT

ICP Index Canister


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

[3490ef2a07]: Bumps the version of ic-cdk from 0.17.0 to 0.18.0 but still maintaining the previous crate version ic-cdk-0-17-1

[c2d5684360]: Refactors the repo to use the newly published import ic_http_types crate instead of ic_canisters_http_types

[d81ed737ae]: Reverses archived_blocks so that the order returned is from the oldest archive to the most recent.

[6973bac7af]: Refactors the block_locations function to iterate over the archive canister in reverse order and sets’s slice to the intersection of the archive with the requested_range. Then it ensures that there is no overlapping between local blocks and newer archives by removing any suffix from earlier ranges that intersect with later ones in function remove_suffix. This ensures that each block is only is reported as being in only one place.

Proposal 136584 – LaCosta | CodeGov

Vote: ADOPT

ICP ledger Canister


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

Contains duplicate commits from previous proposals

[e669604b02]: Removes stable structures migration logic. Removes older ledger canister canister versions used for testing and assumes a mimimum ledger version LEDGER_VERSION = 3 panicking otherwise.

Proposals 136585, 136586, 136587 & 136588 – LaCosta | CodeGov

Vote: ADOPT

ICP archive1, archive2, archive3 and archive4 canisters


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

Contains duplicate commits from previous proposals

About CodeGov

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these technical topics. We also have a group of Followees who vote independently on the Governance and the SNS & Neuron’s Fund topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron, KongSwap, and Alice with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.