NNS Updates 2025-04-04

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

Proposals to be Submitted

Governance

# Upgrade the Governance Canister to Commit 910ed6f

__Proposer__: jason.zhu at dfinity.org

__Source code__: [910ed6f13390e590b6b9f45ab21ea25182b76553][new-commit]

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


## Features & Fixes

###  Changed

* Disable Neuron's Funds for ongoing SNSs, as approved in
  proposal [135970](https://dashboard.internetcomputer.org/proposal/135970).

###  Removed

* The `topic_followee_index` in the heap is removed, along with the flag
  `USE_STABLE_MEMORY_FOLLOWING_INDEX` that was set to true in the proposal 135063.


## New Commits

```
$ git log --format="%C(auto) %h %s" 3afec59ddf883e80a4987fa9129d62ad156548a2..910ed6f13390e590b6b9f45ab21ea25182b76553 --  ./rs/nns/governance ./rs/sns/init
 21a34cea35 feat(nns): Disable Neuron Fund for new SNSs (#4541)
 98e8d97621 refactor(nns): Remove topic_followee_index and USE_STABLE_MEMORY_FOLLOWING_INDEX (#4592)
 e325bb0616 chore(nns): add support in release scripts for node-rewards canister (#4252)
```


## Current Version

__Current git hash__: 3afec59ddf883e80a4987fa9129d62ad156548a2

__Current wasm hash__: 1f7d2d10c786c417db1c50f4a6f5d18e306b81c77496654c11a20ec04e4f0671


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


### WASM Verification

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

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

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

Node-rewards

# Upgrade the Node-rewards Canister to Commit 910ed6f

__Proposer__: jason.zhu at dfinity.org

__Source code__: [910ed6f13390e590b6b9f45ab21ea25182b76553][new-commit]

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


## Features & Fixes

###  Added

* The Node Reward Canister will now sync changes from the Registry canister.

## New Commits

```
$ git log --format="%C(auto) %h %s" 3a3cf55373bfe5843fac9fff6657127ae11b5dd8..910ed6f13390e590b6b9f45ab21ea25182b76553 --  ./rs/node_rewards/canister ./rs/node_rewards ./rs/registry/node_provider_rewards
 f6425d47af docs(node-rewards): Add node provider reward calculations documentation (#4604)
 e325bb0616 chore(nns): add support in release scripts for node-rewards canister (#4252)
 2fe8aefafc feat(node-reward): Add registry sync to node reward canister (#4349)
```


## Current Version

__Current git hash__: 3a3cf55373bfe5843fac9fff6657127ae11b5dd8

__Current wasm hash__: 8637e0182ffc1255563e295efee28f2163f9be21bbd27f3e65bfc3c1f470d3ca


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


### WASM Verification

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

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

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

Proposal 136071 – LaCosta | CodeGov

Vote: ADOPT

Governance Canister

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

[21a34cea35]: Disables the Neuron Fund according to adopted proposal 135970. Includes a check in validate_create_service_nervous_system to verify if are_nf_fund_proposals_disabled is true along with neurons_fund_participation being enabled, throwing an error in that case.

[98e8d97621]: Removes the USE_STABLE_MEMORY_FOLLOWING_INDEX feature flag and test functions temporarily_enable/disable_stable_memory_following_index. Init argument topic_followee_index, Followers and FollowersMap following the transition to stable storage.

[e325bb0616]: Adds node-rewards to the list of canisters to be included in the Bazel build. Assigns the canister ID sgymv-uiaaa-aaaaa-aaaia-cai on both the local and mainnet. Updates ALL_NNS_CANISTER_IDS in order to include this canister along with ledgers archives and PROTOCOL_CANISTER_IDS to be used as ProtocolCanisterManagement proposals.

Proposal 136072 – LaCosta | CodeGov

Vote: ADOPT

Governance Canister

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

[f6425d47af]: Node Provider Reward calculation documentation.

[e325bb0616]: Adds node-rewards to the list of canisters to be included in the Bazel build. Assigns the canister ID sgymv-uiaaa-aaaaa-aaaia-cai on both the local and mainnet. Updates ALL_NNS_CANISTER_IDS in order to include this canister along with ledgers archives and PROTOCOL_CANISTER_IDS to be used as ProtocolCanisterManagement proposals.

[2fe8aefafc]: Makes the NodeRewardsCanister capable of syncing data from the IC Registry Canister at regular intervals. Schedules a 1 hour interval REGISTRY_SYNC_INTERVAL_SECONDS to sync the data using StableCanisterRegistryClient. CanisterRegistryClient trait now has two functions get_latest_version and sync_registry_stored to call the Registry implemented on StableCanisterRegistryClient that uses StableMemory to store a copy of the Register data.

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.

1 Like

Proposal #136071 for Governance — Zack | CodeGov

Vote: Adopted

Reason: The build is reproducible and the wasm hash is a match.
The canister id rrkah-fqaaa-aaaaa-aaaaq-cai is correct and the install mode is upgrade.

21a34cea35 feat(nns): Disables the Neuron Fund for new SNS, adds a function to check whether NNS (Neurons’ Fund) proposals are currently disabled.
98e8d97621 refactor(nns): Removes unused topic_followee_index and it’s reserved id 22 from heap while removing also the USE_STABLE_MEMORY_FOLLOWING_INDEX feature flag that is now set to true since proposal 135063
e325bb0616 chore(nns): With the following proposal that enables node-rewards to sync changes from the Registry canister is now added and supported by the release scripts with id sgymv-uiaaa-aaaaa-aaaia-cai.

Proposal #136072 for Node-rewards-canister — Zack | CodeGov

Vote: Adopted

Reason: The build is reproducible and the wasm hash is a match.
The canister id sgymv-uiaaa-aaaaa-aaaia-cai is correct and the install mode is upgrade.

f6425d47af docs(node-rewards): Node Provider Reward Calculations added to docs. Well worth a read, for anyone who did not do so yet, and is screaming left and right, specially the The reward calculation implementation part.
e325bb0616 chore(nns): same as in the Governance canister.
2fe8aefafc feat(node-reward): Allows the Node Rewards canister to sync from the Registry canister at different intervals, currently set to 1 hour in post upgrade.
The 2 asynchronous methods get_latest_version and registry_changes_since are used to call the Registry.
The CanisterRegistryClient get’s a cleanup.All is done in preparation for the upcoming dynamic node provider rewards.

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.

Adopt proposal 136071

Proposal

  • Canister id rrkah-fqaaa-aaaaa-aaaaq-cai is indeed the governance canister.
  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash is reproducible.

image

  • Neuron fund is now disabled following abuse from a 3 SNS projects.

Adopt proposal 136072

Proposal

  • Canister id sgymv-uiaaa-aaaaa-aaaia-cai is indeed the Node-rewards Canister.
  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash is reproducible.

image

Introduced flexibility for the Node Rewards canister to sync with the Registry canister at adjustable intervals (currently set to 1 hour in post-upgrade hooks). Leveraged two async methods—get_latest_version and registry_changes_since—to query the Registry efficiently. Updated the CanisterRegistryClient with a cleanup pass. This lays the groundwork for the upcoming dynamic node provider reward system.

Proposal 136071 - Zane | CodeGov

Vote: ADOPT
Reason: Build completes successfully, both hashes and reviewed commits match their descriptions.

136071

21a34cea35 Added DISABLE_NF_FUND_PROPOSALS flag to governance canister global state and use it to gate neuron fund access in validate_create_service_nervous_system. If a new SNS is being created and it defines a neuron fund participation while the NF is disabled an InvalidProposal error is returned. Added some helper methods to toggle the NF in tests.

98e8d97621 Deleted USE_STABLE_MEMORY_FOLLOWING_INDEX feature flag alongside all the code associated with it. Since the index is persisted in stable memory, all references to the heap version, i.e topic_followee_index, alongside the rust/proto definitions for its type have been cleaned up.

e325bb0616 Specified node rewards canister as one of NNS candidates in run_determine_targets release scripts, added local and mainnet id for node rewards canister to the nns canister ids. New constants have been defined in rs/nns/constants/src/lib.rs for the canister id/index of both reward canister and the third ICP ledger archive, furthermore ALL_NNS_CANISTER_IDS array now specifies ids for all icp ledger archives, ledger index, subnet rental and node rewards canisters.
create_canister_id_at_position has been refactored into ensure_canister_id_exists_at_position method, the new implementation first checks whether the speciifed id already exists before proceeding to create it. Added setup_nns_node_rewards_with_correct_canister_id to allocate the expected id specified in the NNS constants and install the relative wasm.

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.

1 Like