NNS Updates 2025-06-20

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

Proposals to be Submitted

Governance

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

# Upgrade the Governance Canister to Commit cc066e9

__Proposer__: daniel.wong at dfinity.org

__Source code__: [cc066e9957ad2f4f7515e9906bb7df4d2fcf78b7][new-commit]

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


## Features & Fixes

###  Added

* Neurons can now perform SetFollowing to configure their following on multiple
  topics at once. Whereas, before, they would have to perform multiple Follow
  operations, one for each topic. This brings NNS into alignment with SNS.


## New Commits

```
$ git log --format="%C(auto) %h %s" 12afb2543219f43e4088e1ecd6d235962e71b211..cc066e9957ad2f4f7515e9906bb7df4d2fcf78b7 --  ./rs/nns/governance ./rs/sns/init
 932823aec0 feat(nns): Set following on multiple topics at once. (#5506)
 035f978fb5 refactor(nns): Refactor distribute_rewards to separate immutable and mutable operations (#5494)
 f57f0ed608 chore(nns,sns): Update release notes after release (#5547)
 7c587c8055 chore(nns): Cleanup USE_NODE_PROVIDER_REWARD_CANISTER flag and code (#5546)
```


## Current Version

__Current git hash__: 12afb2543219f43e4088e1ecd6d235962e71b211

__Current wasm hash__: 5965ebd3d45d480387f72229553fcd843711fc222e0d78c4f0d276fcfc791bab


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


### WASM Verification

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

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

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

# Upgrade the Registry Canister to Commit cc066e9

__Proposer__: daniel.wong at dfinity.org

__Source code__: [cc066e9957ad2f4f7515e9906bb7df4d2fcf78b7][new-commit]

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


## Features & Fixes

### Changed

* The `check_routing_table_invariants` method now checks the new canister_ranges_
  and ensures they match the `routing_table` record. The old invariant check will be
  removed once `routing_table` is removed.


## New Commits

```
$ git log --format="%C(auto) %h %s" 12afb2543219f43e4088e1ecd6d235962e71b211..cc066e9957ad2f4f7515e9906bb7df4d2fcf78b7 --  ./rs/registry/canister
 f57f0ed608 chore(nns,sns): Update release notes after release (#5547)
 d5d85d2072 fix(registry): Handle currently impossible edge case in canister_ranges_ updates (#5545)
 782c748f02 feat(registry): Add invariant check for sharded canister migrations (#5535)
```


## Current Version

__Current git hash__: 12afb2543219f43e4088e1ecd6d235962e71b211

__Current wasm hash__: a1af9ac740a5840125a79eb24c2663fdb3301637e5c4892bf24875084037fbbb


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


### WASM Verification

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

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

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

Proposal 137080 – LaCosta | CodeGov

Vote: ADOPT

Governance Canister

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

[932823aec0]: Adds the SetFollowing command allowing neurons to specify followees for multiple governance topics in a single operation whereas previously it was needed to call the Follow multiple times. Adds structs SetFollowing and FolloweesForTopic and implements validations guaranteeing that the topics are unique and that the number of followees is below MAX_FOLLOWEES_PER_TOPIC

[035f978fb5]: Separates the method distribute_rewards into two new ones, calculate_voting_rewards and distribute_voting_rewards_to_neurons in order to distinguish between calculations and mutations. Refactors code accordingly

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

[7c587c8055]: Removes feature flag USE_NODE_PROVIDER_REWARD_CANISTER and related code that responsible for switching between get_node_providers_monthly_xdr_rewards_from_node_provider_reward_canister and get_node_providers_monthly_xdr_rewards_from_registry.

Proposal 137081 – 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

[d5d85d2072]: Fixes an edge case in the mutations_for_canister_ranges function where it was assumed that a CanisterId(0) shard always existed except if new_shards was empty. It updated the logic with entry().or_insert_with() to ensure that a CanisterId(0) shard exists even if new_shards is not empty. Adds a test accordingly.

[782c748f02]: Modifies method get_routing_table to call new helper function get_routing_table_shards that returns the new sharded canister_ranges_ records and compares it against the legacy routing table. Creates a new test if_sharded_ranges_they_must_match_original_routing_table and a new benchamrk measure_routing_table_invariant_checks_shards_and_unsharded to measure the execution of check_routing_table_invariants.

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.

2 Likes

proposals - [137080, 137081] Cyberowl | CodeGov

Proposals:

137080
137081

Vote: [ADOPT, ADOPT]

Reason & Feedback:

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

Checks:

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

Overall Summary:

The governance changes add a new SetFollowing command that allows neurons to configure followees for multiple topics in a single operation, streamlining what previously required separate calls per topic. Removes deprecated node-provider reward fetching paths. The registry updates improve canister routing table handling by reading sharded canister_ranges entries from snapshots, reconstructing routing tables from those shards, and validating consistency with main routing table records.

Commits Summary

proposal / 137080 (Governance)

932823aec0
Adds a new SetFollowing command that lets a neuron configure its list of followees for multiple governance topics in one operation, what previously required separate follow calls per topic.

035f978fb5
Extracts the reward‐calculation into a standalone, side‐effect–free calculate_voting_rewards and then having distribute_voting_rewards_to_neurons apply the results, the code’s intent becomes clearer, it’s easier to test.

f57f0ed608
Update change logs.

7c587c8055
Removes the old feature‐flagged path for fetching node-provider rewards, eliminating the use_node_provider_reward_canister toggle, its helper methods, and the registry‐based implementation.

proposal / 137081 (Registry)

f57f0ed608
Update change logs. Same commit as proposal / 137080

d5d85d2072
The code guarantees there’s always a shard at CanisterId(0). That prevents the later .range(zero_id..=…)…unwrap() from ever panicking if new_shards started out non‐empty but lacked the zero‐key entry. New test verifies that edge case.

782c748f02
Reads any sharded canister_ranges entries from the snapshot, reconstructs a routing table from those shards, asserts it matches the main routing table record, and then returns the record.

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.