NNS Updates 2025-08-30

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

Additional Notes / Breaking Changes

Proposals to be Submitted

Node-rewards

# Upgrade the Node-rewards Canister to Commit e3857ed

__Proposer__: pietro.di.marco at dfinity.org

__Source code__: [e3857ed56a35a75170e6d93ed98b84c169860f72][new-commit]

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


## Features & Fixes

* Add get_node_providers_rewards endpoint, to be used by the Governance to compute performance-based rewards.
* Store rewards (including intermediate results) in stable memory for client retrieval.
* Add get_node_provider_rewards_calculation endpoint to compute ongoing rewards and fetch historical ones.
* Add get_historical_reward_periods endpoint to fetch historical reward periods and the providers rewarded.
* Fix rewards calculation algorithm to extrapolate with 0% failure rate node's performance for node providers with no assigned nodes on a given day.

## New Commits

```
$ git log --format="%C(auto) %h %s" 98b37bf4ffd2f46bc968018bb850a9753540877b..e3857ed56a35a75170e6d93ed98b84c169860f72 --  ./rs/node_rewards/canister ./rs/node_rewards ./rs/registry/node_provider_rewards
 6fd65a9e53 feat(NRC): Add endpoint to fetch historical rewards (#6495)
 4cdc4e66ec feat(NRC): Add rewards calculation endpoint (#6465)
 f398475d9c feat(NRC): Store rewards distribution in stable mem. (#6302)
 7fb60c16d4 chore(nns): Release notes (#6295)
 e91e2af3ec fix(NRC): Remove limits on number of nodes  (#6439)
 91b252383a fix(NRC): Consider performance of assigned nodes below limit (#6382)
 49d659c29d feat: Unify ic-cdk to v0.18.6 (#6264)
 eaee8f1c74 feat(NRC): Add get_node_providers_rewards endpoint (#6241)
```


## Current Version

__Current git hash__: 98b37bf4ffd2f46bc968018bb850a9753540877b

__Current wasm hash__: 5cb2b88b043007b297a084cfe51820e83df836227b76ae140b897cb25f40e945


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


### WASM Verification

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

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

# 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 138288 | Tim - CodeGov

Screenshot 2025-09-01 122921

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.

[6fd65a9e53]
Adds new query function get_historical_reward_periods and enables the get_node_provider_rewards_calculation query for historical requests only.

[4cdc4e66ec]
Adds new query function get_node_provider_rewards_calculation, although not yet active and details yet to be added. Adds NodeRewardsCanister::get_node_provider_rewards_calculation method and Candid specifications to support it.

[f398475d9c]
Renames the fields in GetNodeProvidersRewardsRequest to use type DayUtc, along with related changes elsewhere. Adds new crate ic-node-rewards-canister-protobuf for storing various node reward metrics and results in stable memory.

[7fb60c16d4]
Adds release notes to changelog.

[e91e2af3ec]
Removes the assigned_count field that was added in 91b252383a below, and adapts step_2_extrapolated_fr (via extrapolated failure rate) and step_5_adjust_node_rewards so that none of the node providers without any assigned nodes are now subject to the performance multiplier penalty.

[91b252383a]
Adds field assigned_count to type Step2Results, containing a HashMap of assigned node count to day. This is utilised in step_5_adjust_node_rewards to change the rewards calculation from giving full rewards to any node provider with 4 or less node machines to giving full rewards only to node providers with less than 4 node machines and no assigned nodes, so that rewards for node providers with less than 4 node machines and some assigned nodes will now be subject to the performance multiplier.

[49d659c29d]
Updates dependencies on ic-cdk (canister development kit) to version 0.18.6 throughout the repo, along with other version updates including those listed in the commit notes. Implements ic-cdk-executor in order to allow interaction from earlier versions of ic-cdk, and ic_cdk::futures for managing asynchronous canister tasks, along with further changes as outlined in the description.

[eaee8f1c74]
Adds update method get_node_providers_rewards to the node provider rewards canister, taking as input a pair of timestamps and returning an optional map rewards_xdr_permyriad of provider rewards to provider ID and an optional error message.

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.

Proposal #138288 for Node-rewards-canister — ZoLee | 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.

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.

proposals - [138288] Cyberowl | CodeGov

Proposals:

138288

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

6fd65a9e53
added get_historical_reward_periods to the Node Rewards Canister for fetching historical reward periods and providers rewarded, updates the get_node_provider_rewards_calculation endpoint to support historical data with a boolean flag.

4cdc4e66ec
get_node_provider_rewards_calculation in the Node Rewards Canister for provider-specific rewards, initially disabled with a placeholder error, updates timestamp handling to use u64 nanos, and extends the Candid interface with new types for requests and responses.

f398475d9c
adds stable memory storage for rewards distribution in the Node Rewards Canister using a new protobuf schema for results, updates DayUtc to use u64 nanos for consistency, and streamlines dependencies by removing unused crates.

7fb60c16d4
Update change log

e91e2af3ec
removes node assignment limits in the Node Rewards Calculator, sets default extrapolated failure rate to 1 for unassigned days, and simplifies reward adjustment logic while updating tests to reflect these changes

91b252383a
adds assigned node count tracking in the Node Rewards Calculator’s Step2Results, sets extrapolated failure rate to 1 for no assignments, and adjusts rewards to full for providers below limits or unassigned

49d659c29d
The commit unifies ic-cdk to version 0.18.6 across the repository

eaee8f1c74
adds a governance-restricted get_node_providers_rewards endpoint to the Node Rewards Canister with timestamp-based requests, computes rewards using existing logic, and includes new Candid types for structured responses along with test adjustments

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.