NNS Updates 2025-05-30

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

Proposals to be Submitted

Cycles-minting

# Upgrade the Cycles-minting Canister to Commit 250daf4

__Proposer__: maximilian.summe at dfinity.org

__Source code__: [250daf4dd0cf7ea74c496b45457dd47ced16368c][new-commit]

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


## Features & Fixes

###  Changed

- Use the mint_cycles128 system API, so larger amounts of cycles can now be minted.


## New Commits

```
$ git log --format="%C(auto) %h %s" 8ac2131be1a86e1267e7774b0c94085fc107bad3..250daf4dd0cf7ea74c496b45457dd47ced16368c --  ./rs/nns/cmc
 8b78380f83 feat: [EXC-1824] Use mint_cycles128 in CMC (#5317)
 4be4307321 feat(governance): Added `use ic_cdk::println;` to files that lack it. (#5233)
```


## Upgrade Arguments

```candid
()
```


## Current Version

__Current git hash__: 8ac2131be1a86e1267e7774b0c94085fc107bad3

__Current wasm hash__: c2fcf59b5c2edb3b0e334a9ed11d3dba24a032531e2e7707a265a8fe11e09bbd


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


### WASM Verification

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

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

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

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

This should match `wasm_module_hash` field of this proposal.


### Upgrade Arguments Verification

[`didc`][latest-didc] is required.

[latest-didc]: https://github.com/dfinity/candid/releases/latest

```
didc encode '()' | xxd -r -p | sha256sum

```

This should match the `arg_hash` field of this proposal.

Governance

# Upgrade the Governance Canister to Commit 250daf4

__Proposer__: maximilian.summe at dfinity.org

__Source code__: [250daf4dd0cf7ea74c496b45457dd47ced16368c][new-commit]

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


## Features & Fixes

###  Added

* Expose a new metric `voting_power_snapshots_latest_snapshot_is_spike`.
* Enabling `DisburseMaturity` neuron management proposals.

###  Changed

* `MAX_NEURON_CREATION_SPIKE` is increased from 120 to 300.


## New Commits

```
$ git log --format="%C(auto) %h %s" 0dc5478d5aa69bfae7878543cb25d4ace362db0c..250daf4dd0cf7ea74c496b45457dd47ced16368c --  ./rs/nns/governance ./rs/sns/init
 250daf4dd0 feat(nns): Enable disburse maturity through neuron management proposals (#5157)
 fd295a030e feat(nns): Expose a metric voting_power_snapshots_latest_snapshot_is_spike (#5179)
 6b847e22fd feat: Increase MAX_NEURON_CREATION_SPIKE to 20 hours worth of neurons (#5335)
 8d8e832b03 test(nns): add maturity disbursement tla model and code link (#5225)
 4b308ddd8b feat(sns): inactive status of SNS api (#5217)
 16825c5cbf chore(nervous-system): Update changelog for release 2025-05-21 (#5247)
 7a51c90946 chore(governance): Clean up more leftovers from merge_maturity (#5245)
 4be4307321 feat(governance): Added `use ic_cdk::println;` to files that lack it. (#5233)
 986a0c95ba revert: "refactor(nns): Make ExchangeRate proposals obsolete (#5011)" (#5163)
```


## Current Version

__Current git hash__: 0dc5478d5aa69bfae7878543cb25d4ace362db0c

__Current wasm hash__: b5a749886a455340c46ad3f3baaf3c4154a64329403966d4367f8225338e2681


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


### WASM Verification

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

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

# 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 250daf4

__Proposer__: maximilian.summe at dfinity.org

__Source code__: [250daf4dd0cf7ea74c496b45457dd47ced16368c][new-commit]

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


## Features & Fixes

Maintenance Release, no major changes.

## New Commits

```
$ git log --format="%C(auto) %h %s" 8ac2131be1a86e1267e7774b0c94085fc107bad3..250daf4dd0cf7ea74c496b45457dd47ced16368c --  ./rs/registry/canister
 ed3650da85 chore(registry): Rename RegistryTransportRecord -> RegistryRecord (#5281)
 16825c5cbf chore(nervous-system): Update changelog for release 2025-05-21 (#5247)
 4be4307321 feat(governance): Added `use ic_cdk::println;` to files that lack it. (#5233)
 72a54263ac test(registry): More tests for large records/chunking. (#5178)
 05fdb3a476 fix: timestamps in nanoseconds in the registry  (#5076)
```


## Current Version

__Current git hash__: 8ac2131be1a86e1267e7774b0c94085fc107bad3

__Current wasm hash__: 5387c3deef80c1ca858127780837a7c8a715655ecb3b97de94881d0eeb9db793


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


### WASM Verification

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

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

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

Hi @msumme. Thanks for the update! Are you or someone in the team able to answer these questions that came up in another thread regarding NNS canister upgrades?

@jasonzhu @aterga @daniel-wong @lara

2 Likes

Proposal 136795 | Tim - CodeGov

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. New commits are reviewed below.

[250daf4dd0]
Adapts Governance::validate_manage_neuron_proposal to allow maturity disbursement through Neuron Management proposals and checks that the to_account field is valid + related test changes.

[fd295a030e]
Adds metric voting_power_snapshots_latest_snapshot_is_spike, intended to indicate whether the latest voting power snapshot is a spike compared to previous snapshots, and a corresponding canbench benchmark voting_power_snapshots_is_latest_snapshot_a_spike.

[6b847e22fd]
Increases MAX_NEURON_CREATION_SPIKE (for the maximum number of neurons that can be created in a spike) from MAX_SUSTAINED_NEURONS_PER_HOUR * 8 to MAX_SUSTAINED_NEURONS_PER_HOUR * 20, as per description.

[8d8e832b03]
Adds TLA models (a verification and bug-finding tool for complex systems) for maturity disbursement in the NNS, along with further improvements to the existing TLA instrumentation as outlined in the commit notes.

[4b308ddd8b]
Adds a get_metrics query function to return an optional Metrics record for a given SNS containing num_recently_submitted_proposals and last_ledger_block_timestamp.

[16825c5cbf]
Updates changelogs for the current release.

[7a51c90946]
Removes code related to the now unused MergeMaturityResponse type and adapts one test accordingly.

[4be4307321]
Adds use ic_cdk::println, use self::println or use ic_cdk::eprintln to ensure that logs and errors are displayed correctly and adjusts dependencies accordingly.

[986a0c95ba]
Reverts commit c605cfaa17 which removed code related to the now obsolete exchange rate proposal topic and adapted NnsFunction::check_obsolete to return an error in the event this proposal topic was used.

Proposal 136796

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. New commits are reviewed below.

[ed3650da85]
Renames type RegistryTransportRecord to RegistryRecord, method get_changes_since_as_transport_records to get_changes_since_as_registry_records and function registry_deltas_to_registry_transport_records to registry_deltas_to_registry_records.

[72a54263ac]
Adds tests related to chunking and modifies other tests to enable chunkifying large values.

[05fdb3a476]
Switches timestamp_seconds to timestamp_nanoseconds in several code sections + related code and test changes.

Proposal 136797

Vote: Adopt

Reason: Build is successful, hashes and args match, commits match descriptions and the reasoning behind the changes is sound. There is one new commit, reviewed below.

[8b78380f83]
Modifies the cycles minting canister to use call_with_payment128 and canister_balance128 from the ic-cdk API.

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

2 Likes

Adopt 136795

Proposal

  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash are reproducible.

image

Code Review

[250daf4dd0] Enable neuron management proposals with a DisburseMaturity command when the to_account field is valid.
[fd295a030e] Add a metric voting_power_snapshots_latest_snapshot_is_spike as a voting power snapshot can take a lot of space.
[6b847e22fd] Increase MAX_NEURON_CREATION_SPIKE from 120 to 300, it limits the number of new neurons that can be created.
[8d8e832b03] Update tla model to also account for maturity disbursement.
[4b308ddd8b] Allows an SNS to become inactive, which is helpful for frontends.
[16825c5cbf] Update changelogs.
[7a51c90946] Removes more dead code of merge_maturity code.
[4be4307321] Make sure that it’s the ic-cdk println! being called in tests.
[986a0c95ba] Revert a commit that made exchange rate proposals obsolete.


Adopt 136796

Proposal

  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash are reproducible.

image

Code Review

[ed3650da85] Rename RegistryTransportRecord to RegistryRecord
[16825c5cbf] Update Changelog
[4be4307321] Make sure that it’s the ic-cdk println! being called in tests.
[72a54263ac] Adds tests for chunking in rs/registry and rs/nns, slightly lowering the chunking threshold (with no release impact), and confirming readiness to enable chunking via a feature flag.
[05fdb3a476] Aligns the naming of timestamps and units being used (nanoseconds).


Adopt 136797

Proposal

  • The upgrade args correspond to the empty args.
  • The install mode is indeed upgrade.
  • The wasm hash are reproducible.

image

Code Review

8b78380f83: Use mint_cycles128 in CMC
4be4307321: Make sure that it’s the ic-cdk println! being called in tests.

1 Like