# 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.
This commit removes the historical rewards and associated storage. Instead of pre-computed rewards the Node Rewards Canister will now recompute values on demand.
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.
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.
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.