NNS Updates 2025-06-06

The NNS Team submitted the following proposals. DFINITY plans to vote on these proposals the following Monday.

Submitted Proposals

Genesis-token

https://dashboard.internetcomputer.org/proposal/136889

# Upgrade the Genesis-token Canister to Commit 02571e8

__Proposer__: daniel.wong at dfinity.org

__Source code__: [02571e8215fa3e77da791e693cc238b2de3beae9][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9


## Features & Fixes

* This ensures that this canister will be ready for chunked registry records/mutations.


## New Commits

```
$ git log --format="%C(auto) %h %s" 4bed17bfc82cddc5691743db6228992cdc2740f4..02571e8215fa3e77da791e693cc238b2de3beae9 --  ./rs/nns/gtc
 b539aa4d01 refactor(nns): Rename the governance API crate from pb::v1 to types (#4986)
 882e7af8e9 chore(crypto): CRP-2697 Move getrandom wasm32-unknown-unknown workaround to packages (#3926)
 97bcf0945c chore(crypto): CRP-2693 Move ic-crypto-secp256k1 to packages (#3784)
 b5192581cc docs(governance): Create changelog files for all of our canisters. (#3388)
```


## Current Version

__Current git hash__: 4bed17bfc82cddc5691743db6228992cdc2740f4

__Current wasm hash__: fd25a4e2e283b498c3be1aaf63cc9b2726264d78a12b12f43ad453ceeb575e7c


## Verification

See the general instructions on [how to verify] proposals like this. A "quick
start" guide is provided here.

[how to verify]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

See ["Building the code"][prereqs] for prerequisites.

[prereqs]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/README.adoc#building-the-code

```
# 1. Get a copy of the code.
git clone git@github.com:dfinity/ic.git
cd ic
# Or, if you already have a copy of the ic repo,
git fetch
git checkout 02571e8215fa3e77da791e693cc238b2de3beae9

# 2. Build canisters.
./ci/container/build-ic.sh -c

# 3. Fingerprint the result.
sha256sum ./artifacts/canisters/genesis-token-canister.wasm.gz
```

This should match `wasm_module_hash` field of this proposal.

Governance

https://dashboard.internetcomputer.org/proposal/136890

# Upgrade the Governance Canister to Commit 02571e8

__Proposer__: daniel.wong at dfinity.org

__Source code__: [02571e8215fa3e77da791e693cc238b2de3beae9][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9


## Features & Fixes

###  Added

* Support disbursing maturity to an account identifier, in addition to icrc1 account.


## New Commits

```
$ git log --format="%C(auto) %h %s" 250daf4dd0cf7ea74c496b45457dd47ced16368c..02571e8215fa3e77da791e693cc238b2de3beae9 --  ./rs/nns/governance ./rs/sns/init
 02571e8215 feat(ICRC_Ledger): FI-1592: Implement ICRC-106 in the ICRC ledger (#2857)
 d4379f3d1a refactor(nns): Refactor Governance::new to combine conversion and fallback (#5419)
 084991f40d refactor(nns): Move Governance API->Internal type conversion into Governance::new (#5400)
 dde0d59eab chore(nns): Delete //rs/nns/governance:scale_bench (#5397)
 c3ae9cc721 feat(sns): inactive status of SNS (#5079)
 7c9a1abf3e feat(nns): Support disbursing maturity to an AccountIdentifier (#5351)
 029ebf5c44 chore: Upgrade canbench to 0.15.0 (#5356)
 d3649d8579 chore(nns): update release notes (#5368)
 c45812358e chore: downgrade to rust 1.85.1 (#5194)
```


## Current Version

__Current git hash__: 250daf4dd0cf7ea74c496b45457dd47ced16368c

__Current wasm hash__: ae8a264f2f8d3397dd16d2e4db8336a7fc9e5bd5ea931a9d047272796601eca5


## Verification

See the general instructions on [how to verify] proposals like this. A "quick
start" guide is provided here.

[how to verify]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

See ["Building the code"][prereqs] for prerequisites.

[prereqs]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/README.adoc#building-the-code

```
# 1. Get a copy of the code.
git clone git@github.com:dfinity/ic.git
cd ic
# Or, if you already have a copy of the ic repo,
git fetch
git checkout 02571e8215fa3e77da791e693cc238b2de3beae9

# 2. Build canisters.
./ci/container/build-ic.sh -c

# 3. Fingerprint the result.
sha256sum ./artifacts/canisters/governance-canister.wasm.gz
```

This should match `wasm_module_hash` field of this proposal.

Root

https://dashboard.internetcomputer.org/proposal/136891

# Upgrade the Root Canister to Commit 02571e8

__Proposer__: daniel.wong at dfinity.org

__Source code__: [02571e8215fa3e77da791e693cc238b2de3beae9][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9


## Features & Fixes

* This ensures that this canister will be ready for chunked registry records/mutations.


## New Commits

```
$ git log --format="%C(auto) %h %s" 8ac2131be1a86e1267e7774b0c94085fc107bad3..02571e8215fa3e77da791e693cc238b2de3beae9 --  ./rs/nns/handlers/root
 7e2c79b152 chore: Remove compute and memory allocation from `InstallCodeArgs` (#5190)
 16825c5cbf chore(nervous-system): Update changelog for release 2025-05-21 (#5247)
 a8e56665ef chore: refactor allocations in try_to_create_and_install_canister (#5170)
```


## Current Version

__Current git hash__: 8ac2131be1a86e1267e7774b0c94085fc107bad3

__Current wasm hash__: 1df99179fae061830c5bd3ff8315070bb9d26bef3c07cbeda502c2f82688c154


## Verification

See the general instructions on [how to verify] proposals like this. A "quick
start" guide is provided here.

[how to verify]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

See ["Building the code"][prereqs] for prerequisites.

[prereqs]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/README.adoc#building-the-code

```
# 1. Get a copy of the code.
git clone git@github.com:dfinity/ic.git
cd ic
# Or, if you already have a copy of the ic repo,
git fetch
git checkout 02571e8215fa3e77da791e693cc238b2de3beae9

# 2. Build canisters.
./ci/container/build-ic.sh -c

# 3. Fingerprint the result.
sha256sum ./artifacts/canisters/root-canister.wasm.gz
```

This should match `wasm_module_hash` field of this proposal.

Sns-wasm

https://dashboard.internetcomputer.org/proposal/136892

# Upgrade the Sns-wasm Canister to Commit 02571e8

__Proposer__: daniel.wong at dfinity.org

__Source code__: [02571e8215fa3e77da791e693cc238b2de3beae9][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9


## Features & Fixes

* This ensures that this canister will be ready for chunked registry records/mutations.

###  Security

Enforce a lower bound for `min_participant_icp_e8s` of `1_000_000`.


## New Commits

```
$ git log --format="%C(auto) %h %s" 9dfa7825fc087deacccbed3985a502e0ec2276ff..02571e8215fa3e77da791e693cc238b2de3beae9 --  ./rs/nns/sns-wasm ./rs/sns/init
 02571e8215 feat(ICRC_Ledger): FI-1592: Implement ICRC-106 in the ICRC ledger (#2857)
 c45812358e chore: downgrade to rust 1.85.1 (#5194)
 7e2c79b152 chore: Remove compute and memory allocation from `InstallCodeArgs` (#5190)
 ba488dcedd fix(sns): Enforce a lower bound for `min_participant_icp_e8s` (#5053)
 2949c97ba3 chore: Revert ic-cdk to 0.17.2 (#5139)
 d1dc4c2dc8 chore: Update Rust to 1.86.0 (#5059)
 b539aa4d01 refactor(nns): Rename the governance API crate from pb::v1 to types (#4986)
 3490ef2a07 chore: bump the monorepo version of ic-cdk to 0.18.0 (#5005)
 2c6673bdc9 feat(registry): Migrate `Registry::store` to high-capacity types. (#4913)
 632e8943fb docs(governance): Update CHANGELOG files for 2025-05-02 Governance team release. (#4965)
```


## Current Version

__Current git hash__: 9dfa7825fc087deacccbed3985a502e0ec2276ff

__Current wasm hash__: 0197120f787b67efbae92c8042da98cb9b251c89cced088f2ed412f4f6da0896


## Verification

See the general instructions on [how to verify] proposals like this. A "quick
start" guide is provided here.

[how to verify]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

See ["Building the code"][prereqs] for prerequisites.

[prereqs]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/README.adoc#building-the-code

```
# 1. Get a copy of the code.
git clone git@github.com:dfinity/ic.git
cd ic
# Or, if you already have a copy of the ic repo,
git fetch
git checkout 02571e8215fa3e77da791e693cc238b2de3beae9

# 2. Build canisters.
./ci/container/build-ic.sh -c

# 3. Fingerprint the result.
sha256sum ./artifacts/canisters/sns-wasm-canister.wasm.gz
```

This should match `wasm_module_hash` field of this proposal.

Node-rewards

https://dashboard.internetcomputer.org/proposal/136893

# Upgrade the Node-rewards Canister to Commit 02571e8

__Proposer__: daniel.wong at dfinity.org

__Source code__: [02571e8215fa3e77da791e693cc238b2de3beae9][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9


## Features & Fixes

* Added performance-based rewards. This is mostly based on successful/failed block production.

* Added a max_rewardable_nodes field to each node operator. Not used yet, but in
  the future, it will limit how many nodes a node operator can onboard (per type).
  

## New Commits

```
$ git log --format="%C(auto) %h %s" 0084cbd1bdfa69146fef27d9e6a58e4992e85ae1..02571e8215fa3e77da791e693cc238b2de3beae9 --  ./rs/node_rewards/canister ./rs/node_rewards ./rs/registry/node_provider_rewards
 2e5a2e15b1 feat(NRC): Add Performance Based rewards calculation library (#5417)
 d7fcb9aa41 feat(registry): Add max_rewardable_nodes to NodeOperatorRecord (#5267)
 4be4307321 feat(governance): Added `use ic_cdk::println;` to files that lack it. (#5233)
 2949c97ba3 chore: Revert ic-cdk to 0.17.2 (#5139)
 b539aa4d01 refactor(nns): Rename the governance API crate from pb::v1 to types (#4986)
 3490ef2a07 chore: bump the monorepo version of ic-cdk to 0.18.0 (#5005)
 c9ea67805b chore(nervous-system): Update changelog for release 2025-04-25 (#4905)
 dbf4269997 chore(node_rewards): migrate tests to pocket ic (#4938)
```


## Current Version

__Current git hash__: 0084cbd1bdfa69146fef27d9e6a58e4992e85ae1

__Current wasm hash__: f249444b64a3ddb59b2a1a93d778488ea2bfaca9bc029901a2c906d5f18449b8


## Verification

See the general instructions on [how to verify] proposals like this. A "quick
start" guide is provided here.

[how to verify]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

See ["Building the code"][prereqs] for prerequisites.

[prereqs]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/README.adoc#building-the-code

```
# 1. Get a copy of the code.
git clone git@github.com:dfinity/ic.git
cd ic
# Or, if you already have a copy of the ic repo,
git fetch
git checkout 02571e8215fa3e77da791e693cc238b2de3beae9

# 2. Build canisters.
./ci/container/build-ic.sh -c

# 3. Fingerprint the result.
sha256sum ./artifacts/canisters/node-rewards-canister.wasm.gz
```

This should match `wasm_module_hash` field of this proposal.

Registry

https://dashboard.internetcomputer.org/proposal/136894

# Upgrade the Registry Canister to Commit 02571e8

__Proposer__: daniel.wong at dfinity.org

__Source code__: [02571e8215fa3e77da791e693cc238b2de3beae9][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9


## Features & Fixes

###  Added

- `add_node_operator` and `update_node_operator_config` methods both support a new field `max_rewardable_nodes`,
  with the same structure as `rewardable_nodes`, but with a different purpose. This field will set the upper limit
  on the number of nodes that can be rewarded for a given node operator for the next version of Node Provider Rewards.


## New Commits

```
$ git log --format="%C(auto) %h %s" 250daf4dd0cf7ea74c496b45457dd47ced16368c..02571e8215fa3e77da791e693cc238b2de3beae9 --  ./rs/registry/canister
 d7fcb9aa41 feat(registry): Add max_rewardable_nodes to NodeOperatorRecord (#5267)
```


## Current Version

__Current git hash__: 250daf4dd0cf7ea74c496b45457dd47ced16368c

__Current wasm hash__: 213a8a9b7ef88815414bc03f94ebc80fb94f34b822e0876ef7a35202912b1ecb


## Verification

See the general instructions on [how to verify] proposals like this. A "quick
start" guide is provided here.

[how to verify]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

See ["Building the code"][prereqs] for prerequisites.

[prereqs]: https://github.com/dfinity/ic/tree/02571e8215fa3e77da791e693cc238b2de3beae9/README.adoc#building-the-code

```
# 1. Get a copy of the code.
git clone git@github.com:dfinity/ic.git
cd ic
# Or, if you already have a copy of the ic repo,
git fetch
git checkout 02571e8215fa3e77da791e693cc238b2de3beae9

# 2. Build canisters.
./ci/container/build-ic.sh -c

# 3. Fingerprint the result.
sha256sum ./artifacts/canisters/registry-canister.wasm.gz
```

This should match `wasm_module_hash` field of this proposal.

proposals - [136889, 136890, 136891, 136893, 136894] Cyberowl | CodeGov

Proposals:

136889
136890
136891
136893
136894

Vote: [ADOPT, ADOPT, ADOPT, ADOPT, ADOPT]

Reason & Feedback:

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

Checks:

Hash Match: [PASS, PASS, PASS, PASS, PASS]
Target Canister: [PASS, PASS, PASS, PASS, PASS]
Proposer Check: [PASS, PASS, PASS, PASS, PASS]

Overall Summary:

The team has revamped core IC code across these proposals, reorganizing raw Prost types into streamlined API modules with helpers, consolidating crypto crates (secp256k1 and getrandom), refactoring governance initialization, eliminating outdated install-code parameters. Additionally, they’ve added a new rewards-calculation crate in rs/node_rewards.

Commits Summary

proposal / 136889

b539aa4d01
Deletes the old pb.rs wrapper, moving the raw Prost‐generated pb::v1 types into a new types.rs module, and re-exporting them at the crate root. Enhances the API types with hand-written helper methods, default-value constructors, Display/Error impls, and business-logic functions directly in lib.rs.

882e7af8e9
Replaces the old ic-crypto-getrandom-for-wasm crate with a new dummy shim called ic-dummy-getrandom-for-wasm (v0.1.0) throughout the repo.

97bcf0945c
Adds packages/ic-secp256k1/
Deletes the rs/crypto/secp256k1 directory from the repo root
Centralizes ECDSA/Schnorr-over-secp256k1 functionality into a single, versioned package and removes the legacy embedded copy.

b5192581cc
No code or build logic is touched here—just the docs around version history.

proposal / 136890

02571e8215
No code or build logic is touched here—just the docs.

d4379f3d1a
Refactors out all of the Governance canister’s startup-default logic into a new initialize_heap_governance_data helper that converts from the high-level API type and fills in missing fields.

084991f40d
Simplifies the canister_init_ entrypoint to call Governance::new(init_payload, …) directly, removing the old InternalGovernanceProto::from conversion. Updates all benchmarks and unit tests to instantiate governance from the new api::Governance type.

dde0d59eab
Matches description Delete //rs/nns/governance:scale_bench

c3ae9cc721
New icrc3_get_blocks async method to both ICRC1Ledger and IcpLedger traits, importing the ICRC-3 GetBlocksRequest/GetBlocksResult types and defaulting to a “Not Implemented” error or unimplemented stub.
New get_metrics composite query—adding GetMetricsRequest/GetMetricsResponse messages in the proto.

7c9a1abf3e
Extends DisburseMaturity to let you send maturity to either an ICRC-1 Account or a raw AccountIdentifier by introducing a new oneof destination in the API, a Destination enum with validation/conversion logic, and updating all governance, finalization, and ledger‐helper code to use it.

029ebf5c44
Upgrade canbench to 0.15.0

d3649d8579
Update release notes.

c45812358e
Upgrade rust toolchain to 1.86.0.

proposal / 136891

7e2c79b152
Removes the now-unused compute_allocation and memory_allocation parameters from every install_code call site and strips those fields out of the InstallCodeArgs, InstallCodeArgsV2, and InstallCodeContext types.

16825c5cbf
Update release notes.

a8e56665ef
Shifts compute‐ and memory‐allocation parameters out of the install_code call and into the canister creation step by using a new CanisterSettingsArgsBuilder and CreateCanisterArgs, leaving InstallCodeArgs without those fields.

proposal / 136893

2e5a2e15b1
Adds a new rewards_calculation crate under rs/node_rewards (complete with its Cargo.toml, source modules, and tests).

d7fcb9aa41
New optional max_rewardable_nodes map to the NodeOperator record to cap how many nodes of each type can be rewarded.

4be4307321
Adds ic_cdk::println/eprintln imports and replacing raw ic_cdk::println! calls with the simpler println!/eprintln! macros.

2949c97ba3
Upgrades all ic-cdk and ic-cdk-macros references from 0.17.1 to 0.17.2. This is the latest commit for ic-cdk updates.

b539aa4d01
Duplicate

3490ef2a07
Bumps the default ic-cdk and ic-cdk-macros crates to v0.18.0.

c9ea67805b
Update change logs.

dbf4269997
Connects the new Node Rewards Canister API into the Nervous System agent by adding an AgentFor trait and nns::node_rewards module with request/response implementations, and rewrites the node rewards canister’s tests to use the async PocketIc test harness and AgentFor interface.

proposal / 136894

d7fcb9aa41
Duplicate

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.

Proposal 136889 | Tim - CodeGov

image

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. New commits are reviewed below.

[b539aa4d01]
Renames ic_nns_governance.pb.v1.rs to types.rs. Deletes rs/nns/governance/api/src/pb.rs and moves this code to rs/nns/governance/api/src/lib.rs.

[882e7af8e9]
Renames getrandom_for_wasm to ic-dummy-getrandom-for-wasm and moves it from ‎rs/crypto/ to ‎packages/ so that it can be published on crates.io.

[97bcf0945c]
Moves crypto/secp256k1/ from ‎rs/ to ‎packages/ and renames it to ic-secp256k1/.

[b5192581cc]
Adds changelog files for 9 system canisters and shifts the general description of the process for this into a new file. (I especially like the expanded comments under “How to Write a Good Entry”! :slight_smile: @daniel-wong )

Proposal 136890

image

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. New commits are reviewed below.

[02571e8215]
Implements the ICRC-106 standard, which allows for the discovery of the index canister from the corresponding ledger canister, for the ICRC ledger. In particular, adds a query function icrc106_get_index_principal.

[d4379f3d1a]
Moves governance_proto field population logic out of the body of the Governance::new method into a new function initialize_heap_governance_data, which also takes over type conversion from other removed methods.

[084991f40d]
Modifies Governance::new method so that instead of having its first parameter use the GovernanceProto type, this parameter now uses the ic_nns_governance_api::Governance type and is converted to the GovernanceProto type at the start of the function, along with related code and test changes as outlined in the commit notes.

[dde0d59eab]
Deletes the scale_bench benchmark, which was used to measure the scalability of NNS governance processes, as the benchmark target has been broken and unused for some time now.

[c3ae9cc721]
Fills in the get_metrics query function introduced in commit 4b308ddd8b, returning an optional Metrics record for a given SNS containing num_recently_submitted_proposals and last_ledger_block_timestamp. Also adds an as yet unimplemented ledger method icrc3_get_blocks in several sections of test code.

[7c9a1abf3e]
Adds optional field to_account_identifier to type DisburseMaturity in order to allow disbursement into non-icrc1 account types. This should only be set if the existing to_account field (for icrc accounts) is not set, and vice versa. Additional related changes as outlined in the commit notes.

[029ebf5c44]
Version update for canbench and several related crates.

[d3649d8579]
Updates changelogs.

[c45812358e]
Partially reverts commit d1dc4c2 (several minor refactoring changes are left alone) which upgraded the Rust version from 1.85.1 to 1.86.0, as this change broke one of the builds of PocketIC.

Proposal 136891

image

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. New commits are reviewed below.

[7e2c79b152]
Removes fields compute_allocation and memory_allocation from InstallCodeArgs and
InstallCodeArgsV2 types, as per description.

[a8e56665ef]
Adapts function try_to_create_and_install_canister to move the use and verification of compute_allocation and memory_allocation forward from the canister installing stage (where these fields are now deprecated) to the canister creation stage.

Proposals 136893 & 136894

image

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. New commits are reviewed below.

[2e5a2e15b1]
Adds new directory rs/node_rewards/rewards_calculation/ incorporating a new library rewards-calculation, intended for calculating the rewards for nodes based on their performance metrics.

[d7fcb9aa41]
Adds field max_rewardable_nodes to type NodeOperatorRecord, representing a map from node type to the maximum number of nodes of that type for which the given Node Operator could be rewarded. Also layout changes to node provider rewards documentation.

[c9ea67805b]
Updates changelog files for release 2025-04-25.

[dbf4269997]
Adapts 2 node rewards canister tests to utilise PocketIC rather than the state machine, + added helper methods as per description.

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, API Boundary Node 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 & Neurons’ 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 decentralisation 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.

In this case does the order of upgrades matter like for eg the Ledger suit ? (index first, ledger second and so on) or is it enough that all canisters are on the same version ? Thank you.

Adopt 136889

Proposal

  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash are reproducible.

Screenshot from 2025-06-14 10-30-48

Code Review

Only minor changes mainly related to crypto dependencies. LGTM


Adopt 136890

Proposal

  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash are reproducible.

Screenshot from 2025-06-14 10-31-54

Code Review

Implementation of the ICRC-106 standard for index canister discovery, refactoring governance initialization logic, and modifying Governance::new to use a different input type. The deprecated scale_bench benchmark is removed, get_metrics is completed, and DisburseMaturity gains support for non-ICRC1 account disbursements.


Adopt 136891

Proposal

  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash are reproducible.

Screenshot from 2025-06-14 10-32-27

Code Review

These changes remove the deprecated compute_allocation and memory_allocation fields from InstallCodeArgs and InstallCodeArgsV2, and shift their handling to the canister creation stage within try_to_create_and_install_canister, aligning with updated usage patterns.


Adopt 136893

Proposal

  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash are reproducible.

Screenshot from 2025-06-14 10-33-06

Code Review

These updates introduce a new rewards-calculation library for computing node rewards based on performance, add a max_rewardable_nodes field to NodeOperatorRecord to limit rewards per node type, switch two tests to use PocketIC, and update changelogs and documentation accordingly.


Adopt 136894

Proposal

  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash are reproducible.

Screenshot from 2025-06-14 10-33-41

Code Review

Same review as registry.

Proposal 136889 – LaCosta | CodeGov

Vote: ADOPT

Genesis-token Canister

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

[b539aa4d01]: Renamed the pb::v1 module within ic_nns_governance_api to types refactoring the code accordingly. Moves the code in rs/nns/governance/api/src/pb.rs to rs/nns/governance/api/src/lib.rs

[882e7af8e9]: Renames getrandom_for_wasm to ic_dummy_getrandom_for_wasm and moves it from /rs/crypto to /packages.

[97bcf0945c]: Renames the crate ic_crypto_secp256k1 to ic_secp256k1 and moves it from /rs/crypto to /packages.

[b5192581cc]: Creates changelog files for several canisters and moves the description of the detailed explanation of when and how to edit this files from rs/nns/governance/unreleased_changelog.md to rs/nervous_system/changelog_process.md

Proposal 136890 – LaCosta | CodeGov

Vote: ADOPT

Governance Canister

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

[02571e8215]: Implements the ICRC-106 standard in the ICRC Ledger, which allows to discover the location of the index canister from the ledger canister. It implements a new query endpoint icrc106_get_index_principal to get the principal ID of the index canister associated with the ledger.

[d4379f3d1a]: Combines the api::Governance to GovernanceProto conversion, XdrConversionRatePb::with_default_values() and split_governance_proto() into one method initialize_heap_governance_data to be used instead in Governance::new.

[084991f40d]: Modifies Governance::new to accept both governance_proto and initial_governance: api::Governance parameters by converting api::Governance to GovernanceProto internally effectively removing reliance on the GovernanceProto::neurons field.

[dde0d59eab]: Deletes the scale_bench benchamrk since there are already other benchmarks with canbench for the purpose.

[c3ae9cc721]: Adds the icrc3_get_blocks method to the LedgerCanister struct that retrieves blocks in a specified range and will be needed for the get_metrics endpoint. Implements the get_metrics query endpoint in SNS governance, which validates the GetMetricsRequest and calls governance’s get_metrics method.

[7c9a1abf3e]: Adds a new field to_account_identifier, 32-byte account identifier, to the DisburseMaturity struct and consequently also adds the optional field account_identifier_to_disburse_to to the MaturityDisbursement struct. The message MaturityDisbursement uses a oneof Destination field with account_to_disburse_to and account_identifier_to_disburse_to. The Destination enum has the necessary logic for validating the fields, and making any necessary conversions.

[029ebf5c44]: Updates the canbench version from 0.1.9 to 0.1.15

[d3649d8579]: Updates change logs to include adopted proposals and corresponding changes.

[c45812358e]: Reverts a previous upgrade of the Rust version since this broke a build of PocketIC. Downgrades from Rust version 1.86.0 to 1.85.1

Proposal 136891 – LaCosta | CodeGov

Vote: ADOPT

Root Canister

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

[7e2c79b152]: Refactors the code to remove the fields compute_allocation and memory_allocation from InstallCodeArgs and InstallCodeArgsV2.

[16825c5cbf]: Updates change logs to include adopted proposals and corresponding changes.

[a8e56665ef]: Refactors function try_to_create_and_install_canister to include compute and memory allocations when calling create_canister instead of install_code

Proposal 136893 – LaCosta | CodeGov

Vote: ADOPT

Node-rewards Canister

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

[2e5a2e15b1]: Implements a rewards-calculation library to calculate node provider rewards based on performance metrics.

[d7fcb9aa41]: Adds a new field max_rewardable_nodes to the AddNodeOperatorPayload, NodeOperatorRecord and UpdateNodeOperatorConfigPayload types to set an upper limit to the number of rewardable nodes per node type for a node operator.

[4be4307321]: Adds use ic_cdk::println; in every file that uses println! or eprintln! and lacked this import. To avoid version errors/ambiguity in test modules it adds use self::println;

[2949c97ba3]: Reverts the bump of ic-cdk from commit 3490ef2a0

[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

[b539aa4d01]: Refactors the ic_nns_governance_api crate renaming pb::v1 to types and moving impl blocks from pb.rs to lib.rs

[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

[c9ea67805b]: Updates change logs to include adopted proposals and corresponding changes.

[dbf4269997]: Updates tests get_node_providers_monthly_xdr_rewards and test_registry_value_syncing to use PocketIC instead of the StateMachine. Adds the AgentFor trait, that implements the agent_for function that creates an agent for a given principal and implements AgentFor for PocketIc and StateMachine

Proposal 136894 – LaCosta | CodeGov

Vote: ADOPT

Registry Canister

image
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.