NNS Updates 2025-09-06

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

Proposals to be Submitted

Node-rewards

# Upgrade the Node-rewards Canister to Commit ca959ab

__Proposer__: pietro.di.marco at dfinity.org

__Source code__: [ca959ab71539b277af5f9880e6a4c5779e135cad][new-commit]

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


## Features & Fixes

* Add Node Provider filtering on get_rewardable_nodes_per_provider to reduce number of instruction on query calls.
* Discard historical rewards storage and API endpoints as historical rewards will be stored in Governance canister.
* Disable replicated execution of query calls.


## New Commits

```
$ git log --format="%C(auto) %h %s" e3857ed56a35a75170e6d93ed98b84c169860f72..ca959ab71539b277af5f9880e6a4c5779e135cad --  ./rs/node_rewards/canister ./rs/node_rewards ./rs/registry/node_provider_rewards
 3f74b950e1 chore(NRC): Add NP filter for query calls (#6605)
 9152ba15ab fix(NPR): Discard historical rewards storage and APIs (#6600)
 a1c2e2e556 chore(PocketIC): use Option<EmptyConfig> instead of bool and Option<bool> (#6549)
 3d42cb0fee chore: disable replicated execution of query endpoints in NRC (#6521)
```


## Current Version

__Current git hash__: e3857ed56a35a75170e6d93ed98b84c169860f72

__Current wasm hash__: 3d33e8501e05b3387346152808f0adcbf401a789cb1c11b475c4ae7092fe6384


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


### WASM Verification

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

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

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

Proposal Review - Seb | CodeGov

This review is composed of 1 proposal (Protocol Canister Management) for the following canister: Node-Rewards Canister.

Proposal 138276 - Node Rewards Canister

Vote: ADOPT
Build is successfull, the Wasm module hash match and the code changes corresponds to the changelog.

3d42cb0fee

This commit prevents the replicated execution of endpoints of the Node Rewards Canister.

a1c2e2e556

This commit replaces the flags for features in Pocket IC by Option instead of bool and Option.

9152ba15ab

This commit removes the historical rewards and associated storage. Instead of pre-computed rewards the Node Rewards Canister will now recompute values on demand.

3f74b950e1

This commit adds a filter so that rewards calculation for a specific node provider doesn’t require computing rewards for other nodes, reducing instructions consuled.

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 - [138378] Cyberowl | CodeGov

pcm_2

Proposals:

138378

Vote: [ADOPT]

Reason & Feedback:

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

Checks:

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

Commits Summary

proposal/138378 (Node-Rewards)

3f74b950e1
optional provider_filter: Option<PrincipalId> parameter to the calculate_rewards and get_rewardable_nodes_per_provider functions in the node rewards canister, enabling filtered reward calculations by provider ID

9152ba15ab
removes historical reward handling from the node rewards canister by deleting the historical flag from requests, associated structs like HistoricalRewardPeriod, protobuf definitions for keys and values, and storage update/retrieval logic

a1c2e2e556
replaces boolean flags for various ICP features in PocketIC’s REST API with Option<EmptyConfig>, updating struct fields, method implementations, and conditional checks to use pattern matching on Some(EmptyConfig {}) instead of direct boolean evaluation

3d42cb0fee
disables replicated execution for query endpoints in the node rewards canister by adding checks with in_replicated_execution() to return errors in replicated mode for get_node_provider_rewards_calculation and get_historical_reward_periods, updating response types to include error variants

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

Proposal 138378 | Tim - CodeGov

Screenshot 2025-09-08 113315

Vote: Adopt

Reason: This proposal upgrades the Node-Rewards canister. Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. Commits are reviewed below.

[3f74b950e1]
Adds optional field provider_filter to NodeRewardsCanister::calculate_rewards and RegistryQuerier::get_rewardable_nodes_per_provider methods, serving to restrict the query to one node provider if used.

[9152ba15ab]
Removes query function get_historical_reward_periods along with related code from NodeRewardsCanister::get_node_providers_rewards and several related types.

[a1c2e2e556]
Changes the type of several PocketIC-related fields from bool or Option<bool> to Option<EmptyConfig> for the sake of compatibility with potential future changes. Possible values are None and Some(EmptyConfig {}) as explained in the commit notes.

[3d42cb0fee]
Adds a flag to the query functions get_node_provider_rewards_calculation and get_historical_reward_periods to disallow replicated execution of these queries. (A non-replicated query call can be used instead.) Also changes the output type of get_historical_reward_periods from a vector to the same vector within a Result.

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