NNS Updates 2025-03-28

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

Governance

# Upgrade the Governance Canister to Commit 3afec59

__Proposer__: arshavir.ter.gabrielyan at dfinity.org

__Source code__: [3afec59ddf883e80a4987fa9129d62ad156548a2][new-commit]

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


## Features & Fixes

###  Added

* The `init` method now supports candid decoding in addition to protobuf. Protobuf decoding will be
  removed in the future, giving clients time to migrate.

###  Changed

* Increased the probability of failure from 70% to 90% for the deprecated _pb methods.
* Increase the neurons limit to 500K now that neurons are stored in stable memory.
* Bump neuron limit to 500K


## New Commits

```
$ git log --format="%C(auto) %h %s" cbebf5d2d74bb97b616a8204df43d2ddfc3560aa..3afec59ddf883e80a4987fa9129d62ad156548a2 --  ./rs/nns/governance ./rs/sns/init
 3afec59ddf feat(nns): Bump neuron limit to 500K (#4567)
 8ed8990f1e test(EXC-1986): Add embedders benchmark for NNS Governance (#4430)
 313edcd11e fix(nns): Track the spawning state in the TLA model (#4525)
 fa88bce3fe feat(nns): Store maturity disbursements in a StableBTreeMap (#4536)
 3ae3649a23 feat(nns): Support initializing NNS Governance by candid (#4537)
 9ff99ef644 fix(nns): Prevent large manage neuron proposals (#4509)
 00a2f02569 feat(nns): Add MaturityDisbursement to neuron internal data model (#4512)
 a08669fdb0 chore(nns): Fail the pb methods in governance with 90% (#4486)
 4516d9fbbf docs(governance-backend): Updated CHANGELOG.md files for 2025-03-21 release. (#4462)
```


## Current Version

__Current git hash__: cbebf5d2d74bb97b616a8204df43d2ddfc3560aa

__Current wasm hash__: 2ba2ba54cd5b68808c1415b42aec05dc67a822a07cbacfcb30871fc663327999


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


### WASM Verification

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

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

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

Registry

# Upgrade the Registry Canister to Commit 3afec59

__Proposer__: arshavir.ter.gabrielyan at dfinity.org

__Source code__: [3afec59ddf883e80a4987fa9129d62ad156548a2][new-commit]

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


## Features & Fixes

* This is a maintenance upgrade.
* The recently added `get_chunk` function cannot be used in a meaninful way yet, since it relied
  on data that cannot be prodiced yet.


## New Commits

```
$ git log --format="%C(auto) %h %s" c5dee3a11b79da7b5c433574f38605d75c9feaf5..3afec59ddf883e80a4987fa9129d62ad156548a2 --  ./rs/registry/canister
 5f39ddfd72 refactor(registry): Moved `get_type` types to Registry's `api` library crate. (#4560)
 e74ee7cee0 feat(registry): Implemented get_chunk method. (#4452)
 4516d9fbbf docs(governance-backend): Updated CHANGELOG.md files for 2025-03-21 release. (#4462)
```


## Current Version

__Current git hash__: c5dee3a11b79da7b5c433574f38605d75c9feaf5

__Current wasm hash__: a0f4a36d46816619ef042d8de1a893c105a33c0c493106f5f9d04602ed9afbcf


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


### WASM Verification

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

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

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

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

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

approved (here are extra characters)

1 Like

proposal - 136006, 136007 – Cyberowl | CodeGov

Checks

Proposals:
136006

136007

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 Summary

5f39ddfd72
Extracts the GetChunkRequest and Chunk types from protobuf-generated modules into a new, dedicated ic_registry_canister_api crate.

e74ee7cee0
get_chunk query method, splits data by SHA256-identified pieces, and stores these chunks in a separate memory partition. Integration tests confirm the correct assembly of multi-chunk blobs and handling of invalid hashes.

3afec59ddf
Increase neuron limit to 500K.

8ed8990f1e
governance-bench-canister to the embedders benchmarking suite, providing minimal endpoints (update_empty and go) for performance testing.

313edcd11e
Adds an explicit neuron state (Spawning vs. NotSpawning) to the TLA+ governance specification, replacing implicit checks for cached stake.

fa88bce3fe
Integration of maturity_disbursements_in_progress into the neuron data model by adding it as a stable storage field. It uses a dedicated BTree map and protobuf serialization.

3ae3649a23
Detects whether incoming data starts with “DIDL” to determine which decoding method to use, logs and handles errors gracefully.

9ff99ef644
Applies a security hotfix that prevents large ManageNeuron proposals by bounding their payload sizes and lowers the maximum number of open ManageNeuron proposals from 100,000 to 10,000. New validation logic to disallow or limit certain commands (MakeProposal, DisburseMaturity, Disburse, and Follow) and adds tests confirming these changes.

00a2f02569
Adds support for tracking ongoing maturity disbursements in maturity_disbursements_in_progress field.

a08669fdb0
Matches description Increase the probability of failure from 70% to 90% for the deprecated.

4516d9fbbf
Updates the CHANGELOG.md and unreleased_changelog.md files for multiple NNS canisters (governance, registry, SNS governance, and SNS swap) to reflect the March 21, 2025 deployments.

If you like the review please follow:

About CodeGov…(click to expand)

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 topics and Synapse on most other 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 and KongSwap with a known neuron and credible Followees.

Learn more about CodeGov and it’s mission at codegov.org.

Adopt proposal 136006

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

Code Review

  • Panic rate has been increased from 0.7 to 0.9 for deprecated pb endpoints.
  • New types related to MaturityDisbursement has been introduced.
  • MAX_NUMBER_OF_NEURONS bumped from 400k to 500k following the storage of neurons in stable memory.
  • TLA models are being updated to match the rust codebase.

Adopt proposal 136007

Proposal

  • Canister id rwlgt-iiaaa-aaaaa-aaaaa-cai is indeed the registry canister.
  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash is reproducible.

image

Code Review

  • Continued the implementation of get_chunk_, no data is produced yet.

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

Proposal #135607 for Registry — 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.

5f39ddfd72 refactor(registry): Moved structs GetChunkRequest and Chunk to Registry’s api library from registry.proto
e74ee7cee0 feat(registry): Moving forward with settings for the get_chunk method responsible for retrieving a chunk of data based on its SHA-256 hash.
4516d9fbbf docs(governance-backend): Updates changelog to 2025-03-21: Proposal 135933.

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.