NNS Updates: 2025-05-02

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

Submitted Proposals

Governance

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

# Upgrade the Governance Canister to Commit 9dfa782

__Proposer__: daniel.wong at dfinity.org

__Source code__: [9dfa7825fc087deacccbed3985a502e0ec2276ff][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/9dfa7825fc087deacccbed3985a502e0ec2276ff


## Features & Fixes

###  Changed

* The Governance canister will fetch rewards from the new Node Rewards Canister instead of from Registry.

###  Removed

* All the `_pb` methods are removed as they already always panic, as well as decoding the init arg
  as protobuf.


## New Commits

```
$ git log --format="%C(auto) %h %s" 0084cbd1bdfa69146fef27d9e6a58e4992e85ae1..9dfa7825fc087deacccbed3985a502e0ec2276ff --  ./rs/nns/governance ./rs/sns/init
 655127aee18 feat(nns): Enable node rewards from new canister (#4939)
 c9ea67805b6 chore(nervous-system): Update changelog for release 2025-04-25 (#4905)
 46369a5eec4 feat(nns): Validate the maturity disbursement index (#4924)
 c68b2498a1e feat(nns): Expose maturity disbursements as part of neuron (#4949)
 f195ba756bc refactor(nns): Remove all prost annotations on the NNS Governance API (#4906)
 c2d56843603 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
 7ea256fe2ca refactor(nns): Remove prost annotation on Governance API type (#4843)
```


## Current Version

__Current git hash__: 0084cbd1bdfa69146fef27d9e6a58e4992e85ae1

__Current wasm hash__: bfe1e31655c8cf9abacddd27b62e8873b594a3b9a39401ae5fd8b2a92d2d9adf


## 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/9dfa7825fc087deacccbed3985a502e0ec2276ff/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

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

[prereqs]: https://github.com/dfinity/ic/tree/9dfa7825fc087deacccbed3985a502e0ec2276ff/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 9dfa7825fc087deacccbed3985a502e0ec2276ff

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

Registry

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

# Upgrade the Registry Canister to Commit 9dfa782

__Proposer__: daniel.wong at dfinity.org

__Source code__: [9dfa7825fc087deacccbed3985a502e0ec2276ff][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/9dfa7825fc087deacccbed3985a502e0ec2276ff


## Features & Fixes

No behavior changes. When there are large registry records, then, the new code
here will behave differently (per [this forum post]), but there is currently no
way to generate such records.

[this forum post]: https://forum.dfinity.org/t/breaking-registry-changes-for-large-records/42893


## New Commits

```
$ git log --format="%C(auto) %h %s" 0084cbd1bdfa69146fef27d9e6a58e4992e85ae1..9dfa7825fc087deacccbed3985a502e0ec2276ff --  ./rs/registry/canister
 c9ea67805b6 chore(nervous-system): Update changelog for release 2025-04-25 (#4905)
 a8eabd26720 feat(registry): During upgrade, decodes using HighCapacityRegistryAtomicMutateRequest. (#4794)
 5fcf760cc97 feat(registry): Added (another) way to dechunkify a (more abstract) high-capacity object. (#4894)
```


## Current Version

__Current git hash__: 0084cbd1bdfa69146fef27d9e6a58e4992e85ae1

__Current wasm hash__: 5556c5b3b8d65cac18ecbc913e3d5b001ced8c67fa7e9d83b27c7065faf9468d


## 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/9dfa7825fc087deacccbed3985a502e0ec2276ff/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

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

[prereqs]: https://github.com/dfinity/ic/tree/9dfa7825fc087deacccbed3985a502e0ec2276ff/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 9dfa7825fc087deacccbed3985a502e0ec2276ff

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

Root

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

# Upgrade the Root Canister to Commit 9dfa782

__Proposer__: daniel.wong at dfinity.org

__Source code__: [9dfa7825fc087deacccbed3985a502e0ec2276ff][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/9dfa7825fc087deacccbed3985a502e0ec2276ff


## Features & Fixes

No behavior change.

Code for new behavior is inactive (behind a flag).


## New Commits

```
$ git log --format="%C(auto) %h %s" 34a638d9f593542f3da89494966c3759667aaf88..9dfa7825fc087deacccbed3985a502e0ec2276ff --  ./rs/nns/handlers/root
 c2d56843603 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
 40a9c37bd41 feat(nns): Allow Governance to request rewards from Node Reward canister instead of registry (behind flag) (#4693)
```


## Current Version

__Current git hash__: 34a638d9f593542f3da89494966c3759667aaf88

__Current wasm hash__: ce91ef20648568db5b14fd6daa6a1bba19ef66d9818950c5a291a734ae647f86


## 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/9dfa7825fc087deacccbed3985a502e0ec2276ff/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

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

[prereqs]: https://github.com/dfinity/ic/tree/9dfa7825fc087deacccbed3985a502e0ec2276ff/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 9dfa7825fc087deacccbed3985a502e0ec2276ff

# 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/136430

# Upgrade the Sns-wasm Canister to Commit 9dfa782

__Proposer__: daniel.wong at dfinity.org

__Source code__: [9dfa7825fc087deacccbed3985a502e0ec2276ff][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/9dfa7825fc087deacccbed3985a502e0ec2276ff


## Features & Fixes

No behavior change. This is just a "maintenance" upgrade; that is, this is to
avoid too much unreleased code piling up.


## New Commits

```
$ git log --format="%C(auto) %h %s" ca2be53acf413bb92478ee7694ac0fb92af07030..9dfa7825fc087deacccbed3985a502e0ec2276ff --  ./rs/nns/sns-wasm ./rs/sns/init
 c2d56843603 refactor(ic): update imports from ic_canisters_http_types to newly published ic_http_types crate (#4866)
 29c3c34b242 chore: drop reduce_state_machine_logging_unless_env_set (#4907)
 40a9c37bd41 feat(nns): Allow Governance to request rewards from Node Reward canister instead of registry (behind flag) (#4693)
 21a34cea35e feat(nns): Disable Neuron Fund for new SNSs (#4541)
 e325bb06165 chore(nns): add support in release scripts for node-rewards canister (#4252)
 2c733606fcb chore(nns/sns): Remove temporary SNS-W upgrade steps from SNS release qualification tests, edit changelog (#4370)
```


## Current Version

__Current git hash__: ca2be53acf413bb92478ee7694ac0fb92af07030

__Current wasm hash__: 3b464f18e561d9d3a559e6191c17f83d0eb41e6f730d2ab79897f6bbe5e0d3ef


## 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/9dfa7825fc087deacccbed3985a502e0ec2276ff/rs/nervous_system/docs/proposal_verification.md


### WASM Verification

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

[prereqs]: https://github.com/dfinity/ic/tree/9dfa7825fc087deacccbed3985a502e0ec2276ff/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 9dfa7825fc087deacccbed3985a502e0ec2276ff

# 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.
1 Like

proposal - [136427, 136428, 136429] – Cyberowl | CodeGov

Checks

Proposals:
136427
136428
136429

Vote: ADOPT
Hashes Match: MATCH, MATCH, MATCH
Proposer Checks: MATCH, MATCH, MATCH
Target Canisters: MATCH, MATCH, MATCH
Feedback: NONE
Reason:
I successfully built and verified the hash. All the commit descriptions match their code changes.

Commits Summary

proposal/136427

655127aee18
Enable feature flag USE_NODE_PROVIDER_REWARD_CANISTER.

c9ea67805b6
Update change logs.

46369a5eec4
Conditional validation of neuron maturity disbursement data through a new MaturityDisbursementIndexValidator, which checks for mismatches and missing entries between primary neuron data and the secondary index. Two new ValidationIssue variants—MaturityDisbursementIndexCardinalityMismatch and MaturityDisbursementMissingFromIndex were added to report these discrepancies, with corresponding tasks added to the validation pipeline when is_disburse_maturity_enabled() is true.

c68b2498a1e
Added maturity_disbursements_in_progress field to Neuron to track ongoing disbursements. MaturityDisbursement struct/type to represent disbursements with amount, timestamps, and destination account. Behind feature flag.

f195ba756bc
Replaces try_from with strum_macros::from_repr for enum conversions. Removes Protobuf-specific traits, custom macros, and tags, relying instead on standard Rust traits like Debug, Default, and PartialEq, while also updating test assertions and panic messages to match the new enum handling. Matches description Remove all prost annotations on the NNS Governance API. No feature or behavior changes.

c2d56843603
Migrate the ic-canisters-http-types crate to a new ic-http-types crate, updating all dependencies, import paths, and build configurations accordingly. No feature or behavior changes.

7ea256fe2ca
Renames the ic-nns-governance-api crate to ic-nns-gtc, removing deprecated Protobuf-based methods, and switching all initialization logic to use Candid encoding. It also eliminates Protobuf tags and types from the Governance struct, standardizes tests to use a simpler Gtc struct, and removes obsolete test utilities like ic-get-neuron-ids and memory stress tests.

proposal/136428

c9ea67805b6
Update change logs.

a8eabd26720
Support for chunking large mutations in the registry canister using HighCapacityRegistryAtomicMutateRequest. Chunking logic was moved from maybe_chunkify (within maybe_chunkify_and_encode) to chunkify_composite_mutation_if_too_large.

5fcf760cc97
dechunkify_prime_mutation_value to support value reconstruction from chunked registry mutations. Logging was improved by replacing println! with eprintln!

proposal/136429

c2d56843603
Rename ic-canisters-http-types to ic-http-types and move it to the packages/ directory, updating all dependencies, imports, and build configurations. No feature or behavior changes.

40a9c37bd41
Governance canister now supports fetching node provider rewards from a dedicated NodeRewardsCanister in test builds, enabled by the test feature flag. The NodeRewardsCanister’s get_node_providers_monthly_xdr_rewards method was changed from a query to an update call, and test infrastructure was updated to include the new canister with standardized setup functions.

If you like the review please follow:

About CodeGov…(click to expand)

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 topics and Synapse on most other 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 and KongSwap with a known neuron and credible Followees.

Learn more about CodeGov and it’s mission at codegov.org.

1 Like

Adopt proposal 136427

Proposal

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

image

Code Review

[655127aee18]: USE_NODE_PROVIDER_REWARD_CANISTER is now true by default.
[c9ea67805b6]: move unreleased_changelog to CHANGELOG.
[46369a5eec4]: introduces a MaturityDisbursementIndexValidator to ensure the accuracy of the maturity disbursement index against primary data when is_disburse_maturity_enabled.
[c68b2498a1e]: enhances the NNS Governance API by exposing maturity_disbursements_in_progress in the Neuron type, enabling users to track ongoing disbursements.
[f195ba756bc]: removes all prost annotations from the NNS Governance API, replacing prost::Message and prost::OneOf with Debug and Default, eliminating unused helpers, making fields like DisburseMaturityResponse::amount_disbursed_e8s public, and adopting strum_macros::FromRepr for enums.
[c2d56843603]: Replace the internal ic-canisters-http-types crate with ic-http-types crate.
[7ea256fe2ca]: removes deprecated prost annotations and protobuf-related methods from the NNS Governance API, migrates tests to GTC, eliminates unused utilities like ic-get-neuron-ids, and adds Default and Debug traits.


Adopt proposal 136428

Proposal

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

image

Code Review

  • [c9ea67805b6]: Update changelog.
  • [a8eabd26720]: Improve upgrade process by decoding with HighCapacityRegistryAtomicMutateRequest and fixing a chunkification bug in changelog_insert, moving it to apply_mutations.
  • [5fcf760cc97]: New dechunkify_prime_mutation_value function to handle high-capacity mutation content, enabling flexible dechunkification for upcoming features.

Adopt proposal 136429

Proposal

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

image

Code Review

[c2d56843603]: Replace the internal ic-canisters-http-types crate with ic-http-types crate.
[40a9c37bd41]: Add targets for test in BUILD.bazel.

Proposal 136427 – LaCosta | CodeGov

Vote: ADOPT

Governance Canister

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

[655127aee18]: Enables fetching rewards from the Node-Rewards canister instead of the registry.

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

[46369a5eec4]: Implements a new validator MaturityDisbursementIndexValidator in neuron_data_validation.rs with two validations. validate_cardinalities makes sure that the number of entries in the index is not larger than in the primary data and validate_primary_neuron_has_corresponding_index_entries validates that each maturity disbursement in primary data is also in the index.

[c68b2498a1e]: Defines a new MaturityDisbursement struct in the API layer used for the Neuron field maturity_disbursements_in_progress which contains a list of all maturity disbursements in progress for a neuron.

[f195ba756bc]: Removes all post macros #[prost()] from Governance. ic_nns_governance_api::pb::v1::Governance structs that derived prost::Message and comparable::Comparable) were replaced by Default and Debug.

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

[7ea256fe2ca]: Removes several deprecated protobuf methods from NNS Governance, manage_neuron_pb, list_neurons_pb, transfer_notification_pb and claim_or_refresh_neuron_from_account_pb. Removes governance_mem_test and migrates tests that relied on protobuf encoding and decoding from Governance to GTC, updating them to using the GTC’s types AccountState and Gtc.

Proposal 136428 – LaCosta | CodeGov

Vote: ADOPT

Registry Canister

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

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

[a8eabd26720]: Updates apply_mutations_as_version to accept as input HighCapacityRegistryAtomicMutateRequest instead of Vec<RegistryMutation>. Fixes a bug where changelog_insert would perform chunkification after being called by from_serializable_form which would lead to incorrect state, chunkification is instead moved to the from apply_mutations. maybe_chunkify_and_encode is replaced with chunkify_composite_mutation_if_too_large

[5fcf760cc97]: Adds a new function dechunkify_prime_mutation_value to the registry’s canister chunking library. It starts by validating the mutation_type by converting it to a registry_mutation::Type panicking otherwise. If mutation is Delete returns one otherise processeds to checking the content, where if this is not empty calls dechunkify to concatenate the chunks.

Proposal 136429 – LaCosta | CodeGov

Vote: ADOPT

Root Canister

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

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

[40a9c37bd41]: Allows Governance (in tests) to make requests to the Node Reward canister instead of the Registry depending on the feature flag use_node_provider_reward_canister . Fixed an issue in the Node Reward Canister changing the function get_node_providers_monthly_xdr_rewards from a query call to an update.

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.