NNS Updates 2025-02-21

commit: 2f17dd8c0

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

Governance

# Upgrade the Governance Canister to Commit 2f17dd8

__Proposer__: daniel.wong at dfinity.org

__Source code__: [2f17dd8c0203b12ac9d5a9c7a43534624d412728][new-commit]

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


## Features & Fixes

###  Changed

* ManageNetworkEconomics proposals can now modify deep fields one at a time.
  Previously, this was only possible for top level fields.

* Added validation for ManageNetworkEconomics proposals. Previously, there was
  none. The result must have all the following properties:

  * All "optional" fields are actually set.

  * `maximum_icp_xdr_rate >= minimum_icp_xdr_rate`

  * Decimal fields have parsable `human_readable` values.

  * `one_third_participation_milestone_xdr < full_participation_milestone_xdr`

* Commit 4467b639a0d is just a cherry pick of a commit that was previously released in
  an emergency upgrade ([proposal 135_265], proposed and executed on the 12th).

[proposal 135_265]: https://dashboard.internetcomputer.org/proposal/135265


## New Commits

```
$ git log --format="%C(auto) %h %s" 345790def6dfa93bcc317171c9733851d205802e..2f17dd8c0203b12ac9d5a9c7a43534624d412728 --  ./rs/nns/governance ./rs/sns/init
 7c85d44fb54 feat(IC-1579): combined TLA model of the instrumented governance methods (#3499)
 b215232f644 fix(governance-tools): Proposal URL was wrong. (#3981)
 bd448f1ad13 feat(IC-1579): allow disabling the TLA instrumentation even with test feature (#3958)
 882e7af8e9b chore(crypto): CRP-2697 Move getrandom wasm32-unknown-unknown workaround to packages (#3926)
 4467b639a0d fix(nns): Rollback neurons migration (#3948)
 974af88b029 feat(nns): Improve ExecuteNnsFunction proposal validation (#3845)
 2008d47a169 feat(nns): Validate manage network economics. (#3859)
 64b19a7fe47 feat(nns): Make NetworkEconomics inherit recursively. (#3801)
 4c20acbce95 chore(nervous-system): Update changelog for release 2025-02-07 (#3867)
```


## Current Version

__Current git hash__: 345790def6dfa93bcc317171c9733851d205802e

__Current wasm hash__: 15c9b8db9e54963d4f7075e1fd3bd6a0055dbe6981a2f6a54dd64114fdb0629f


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


### WASM Verification

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

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

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

Sns-wasm

# Upgrade the Sns-wasm Canister to Commit 2f17dd8

__Proposer__: daniel.wong at dfinity.org

__Source code__: [2f17dd8c0203b12ac9d5a9c7a43534624d412728][new-commit]

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


## Features & Fixes

###  Changed

NNS Root is no longer the controller of a newly deployed SNS's Swap canister. For more details,
please refer to [this forum thread](https://forum.dfinity.org/t/making-swap-a-proper-sns-canister/36519?u=aterga).


## New Commits

```
$ git log --format="%C(auto) %h %s" 00b04a892dfb2fee1459f1de9d4a731aa04f1ca3..2f17dd8c0203b12ac9d5a9c7a43534624d412728 --  ./rs/nns/sns-wasm ./rs/sns/init
 9a5fde4a4d7 feat(sns): No longer grant NNS Root control over Swap canisters of newly deployed SNSs (#3978)
 b215232f644 fix(governance-tools): Proposal URL was wrong. (#3981)
 05601afe26b chore(nervous-system): Update changelog for release 2025-02-14 (#3967)
```


## Current Version

__Current git hash__: 00b04a892dfb2fee1459f1de9d4a731aa04f1ca3

__Current wasm hash__: c1427f6c751fcb587c95797e6ebbbbea1f10df266157fb0a54b34239fa2e9de0


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


### WASM Verification

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

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

# 2. Build canisters.
./ci/container/build-ic.sh -c

# 3. Fingerprint the result.
sha256sum ./artifacts/canisters/sns-wasm-canister.wasm.gz
```

This should match `wasm_module_hash` field of this proposal.
1 Like

Reject 135436

The build is not reproducible, I got a different hash while buidling from the same source.

Screenshot 2025-02-22 at 14.57.42

proposed wasm hash: fb4f2abad21680b1894a8bfbb6d280f9d4cc19fe2038480beaf50aad40d85df8

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

Proposal 135436 - Zane | CodeGov

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

135436

7c85d44fb54 Matches description.

b215232f644 Fixed proposal URL in changelogs.

bd448f1ad13 Disable TLA traces when either TLA_TRACES_LKEY or TLA_TRACES_MUTEX aren’t set.

882e7af8e9b Renamed ic-crypto-getrandom-for-wasm crate to ic-dummy-getrandom-for-wasm and moved it to packages. Updated imports to reflect the changes.

4467b639a0d Port over code from last week’s b6578aca3b into the main branch.

974af88b029 Reworked is_obsolete method of NnsFunction into check_obsolete, which instead of returning a boolean, also attaches an error message. In validate_execute_nns_function method this check has been moved up to happen before can_have_large_payload. Effectively made UpdateUnassignedNodesConfig nns function obsolete by no longer matching it to a canister id/function name, it already was part of the is_obsolete check, but would never get there due to being matched before.

2008d47a169 Added network economics validation for ManageNetworkEconomics type action both when validating and executing proposals. At a high level the validation is performed by the new apply_changes_and_validate method, which merges the proposed set of changes into the existing network settings, then new validate method is called on the resulting object. This method ensures max_proposals_to_keep_per_topic field value is higher than 0 and both neurons_fund_economics/voting_power_economics optional fields are set, then the validate methods is called recursively on each substruct, if at any point in this process even one checks fails it is added to a list of defect, which is eventually returned wrapped in an Err variant.

64b19a7fe47 Moved VotingPowerEconomics and NetworkEconomics impl blocks to a separate module, defined InheritFrom trait and implemented it for all types, both base and custom, used by the 2 structs so that it is possible to recursively create a deep copy of a NetworkEconomics instance on which some changes have been applied.

4c20acbce95 Updated changelog files.

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 #135436 for Governance — Zack | CodeGov

Vote: Adopted

Reason: Builds fine and the wasm hash is a match.

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 - 135436 – Cyberowl | CodeGov

Checks

Vote: ADOPT
Hash Match: MATCH
Feedback: NONE
Proposer Check: MATCH
Target Canister: MATCH
Reason:
I successfully built and verified the hash. All the commit descriptions match their code changes.

Commits

7c85d44fb54
Common_Apalache.tla to centralize type definitions and variable declarations. Disbursement logic is updated to enforce realistic stake constraints POSSIBLE_DISBURSE_AMOUNTS, neuron spawning now requires a zero cached stake condition. Model checking constraints are refined with bounded stake values.

b215232f644
Fix proposal URL

bd448f1ad13
Makes TLA+ trace collection optional by wrapping TLA_TRACES_MUTEX in an Option, allowing the system to disable instrumentation when not needed. Test files are modified to explicitly enable tracing when needed.

882e7af8e9b
Renames and relocates ic-crypto-getrandom-for-wasm to ic-dummy-getrandom-for-wasm, moving it under /packages/ for better modularity and visibility. README.md clarifies that the package provides a dummy implementation to handle rand crate issues on wasm32-unknown-unknown targets.

4467b639a0d
Few more changes for the neurons migration rollback.

974af88b029
Replaces the is_obsolete method with check_obsolete, which now returns a descriptive error message for obsolete NnsFunction variants. The canister_and_function and validate_execute_nns_function methods now call check_obsolete.

2008d47a169
Validation checks in governance.rs to ensure that ManageNetworkEconomics proposals contain valid economic parameters before execution. The new validate_manage_network_economics method prevents invalid configurations, such as zero max_proposals_to_keep_per_topic or inconsistent rate values.

64b19a7fe47
Moves NetworkEconomics, VotingPowerEconomics, and related logic from governance.rs into a new network_economics.rs module. inherit_from method is refactored to support recursive merging of nested fields, allowing ManageNetworkEconomics proposals to modify specific subfields (e.g., contribution_threshold_xdr) without affecting others.

4c20acbce95
Updates changelog files to reflect the execution of five NNS proposals on February 7, 2025. Minor tooling update in add-release-to-changelog.sh ensures timestamps are correctly extracted for changelog automation.

If this review is helpful please follow:

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 135436 – LaCosta | CodeGov

Vote: ADOPT

Governance Canister

image

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

[7c85d44fb54]: Centralizes the governance canister’s TLA models into Governance.tla, enables TLC model checking of ledger transactions. Common_Apalache.tla holds shared type aliases and variables.

[b215232f644]: Fixes the script testnet/tools/nns-tools/add-release-to-changelog.sh to generate the correct URLs and fixes the URLs in the CHANGELOGS

[bd448f1ad13]: Prevents recording TLA traces even if the test feature is on through:
TLA_TRACES_MUTEX now set to Option<RwLock<Vec<UpdateTrace>>> which defaults to None in governance
TLA_TRACES_LKEY set through the with_tla_trace_check attribute macro

[882e7af8e9b]: Renames the crate ic_crypto_getrandom_for_wasm to ic_dummy_getrandom_for_wasm and moves it from rs/crypto/ to packages/ in order to be published and externally used.

[4467b639a0d]: Rollback neuron migration

[974af88b029]: Improves the error message of types of obsolete proposals to be more helpful and changes the obsolete errors to be the first errors triggered before others in canister_and_function.

[2008d47a169]: Implements validation of the network economics. Updates the method perform_manage_network_economics to apply all proposal changes and validate them. Implements a validate method for NetworkEconomics and nested substructs that validate the values of the fields after the proposed changes such as making sure that substructs are set even though they are optional.

[64b19a7fe47]: Updates the logic of the NetworkEconomics struct by allowing fields to be set recursively through nested fields. Firstly the commit moves the struct implementation from governance.rs to it’s own file rs/nns/governance/src/network_economics.rs. Second it implements the recursive method inherit_from that recursively propagates the changes down the fields until it finds the desired field and changes it with the value provided.

[4c20acbce95]: Moved added features and fixes from unrealeased_changelog.md to CHANGELOG.md in the form of proposals that were released.

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 Review — Wenzel | CodeGov

Topic: Service Nervous System Management
Proposal: 135437
Vote: ADOPT
Comments: This proposal was adopted by the CodeGov known neuron at the recommendation of one of our CodeGov team members, @ZackDS. It is one of the final steps outlined by @aterga in this post on the forum. As stated in the proposal, NNS Root is no longer the controller of a newly deployed SNS’s Swap canister after this proposal is adopted.

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