The NNS Team will be submitting the following upgrade proposals today, 2023-10-16. DFINITY plans to vote on these proposals this coming Thursday.
This release consists of previously released and rolled back changes, and additional refactorings
Additional Notes / Breaking Changes
This is a partial re-release of features that went out and were reverted last week due to a bug causing too many cycles to be consumed during NNS Governance heartbeat. That fix is included as well.
In addition to code refactoring, optimisations and maintenance, the following externally visible changes were implemented:
Major Changes
- A bug fix that will enforce the minimum exchange rate of ICP to XDR when rewarding node providers. This check was previously enforced when submitting Exchange Rate proposals but was missed when implementing the exchange rate canister. There is no noticeable change in the current behavior.
- Disabling the submission of UpdateAllowedPrincipals proposal in NNS Governance. This disables the first step of the legacy SNS initialization method. All SNSes must now use the 1-proposal method via the CreateServiceNervousSystem proposal.
Proposals to be Submitted
Governance
## Proposal to Upgrade the Governance Canister
### Proposer: DFINITY Foundation
### Git Hash: 3d8309b06dfd2c6c2a9e2d8b670db711faca3f1c
### New Wasm Hash: 3b3daa0fee1562f948113b06783de4bd98752a7935e392b07a95af639c70627e
### Target canister: rrkah-fqaaa-aaaaa-aaaaq-cai
---
## Features
Major Changes
* A bug fix that will enforce the minimum exchange rate of ICP to XDR when rewarding node providers. This check was previously enforced when submitting Exchange Rate proposals but was missed when implementing the exchange rate canister. There is no noticeable change in the current behavior.
* Disabling the submission of UpdateAllowedPrincipals proposal in NNS Governance. This disables the first step of the legacy SNS initialization method. All SNSes must now use the 1-proposal method via the CreateServiceNervousSystem proposal.
* A bug fix for unstake_maturity causing too many instructions per heartbeat
## Release Notes
```
$ git log --format="%C(auto) %h %s" e63cc8e68d591dd0ca3e68ec46ed1d9c2c1d7797..3d8309b06dfd2c6c2a9e2d8b670db711faca3f1c -- ./rs/nns/governance
e2ff2692bb feat(NNS1-2636): Matched Funding / Add idempotent method for creating SNS Neuron Recipes
0f40ed718c Merge branch 'jason/fix-unstake-maturity' into 'master'
5df24ab6a1 fix: Fix a bug with unstake maturity causing high number of instructions per heartbeat
887577c5cf Revert "Merge branch '@anchpop/NNS1-2647' into 'master'"
63d321d0f9 feat(NNS1-2630): Matched Funding / Implement a generic inverse function for computing `NeuronsFundParticipationConstraints`
25904e8f23 feat(NNS1-2647): Genesis Neuron Tagging / Add `is_genesis` field to NNS Neurons
39b697e4ae refactror: NNS1-2616: update following index in NeuronStore instead of Governance when removing neurons
0aeffba491 refactor: NNS1-2616: update following index in NeuronStore instead of Governance when adding neurons
fb9b519a0b Merge branch 'NNS1-2616-index-dedup-D' into 'master'
859de7e154 refactor: NNS1-2616: rename upsert to add_neuron and change signature
d4c3460bfd feat(NNS1-2657): Matched Funding / Introduce `neurons_fund_participation : opt bool` to `SwapParameters`
642ddee0d1 refactor: NNS1-2616: Update following index in NeuronStore instead of Governance when updating neuron
142ca3fabc Merge branch 'NNS1-2616-index-dedup-B' into 'master'
caa1ae223e refactor: NNS1-2616: Change types of HeapNeuronFollowingIndex to be like StableNeuronFollowingIndex in NeuronStore
f07e62b699 Merge branch 'jason/NNS1-2482' into 'master'
225a7ec627 feat: NNS1-2482 Expose neuron data validation summary through a canister query method
39b0364297 feat(NNS1-2639): Matched Funding / Add `min_direct_icp` and `max_direct_icp` to swap and governance
1e7e400d49 NNS1-2616: Change names of local types
d77d88d1bd refactor: NNS1-2616: Create update_neuron_indexes method
a290a6dc6e Merge branch 'jason/NNS1-2413-4' into 'master'
eb39eefd3f feat: NNS1-2413 Call NeuronDataValidator::maybe_validate within heartbeat
74f035b9d6 refactor: NNS1-2616: NeuronStore can take HeapNeuronFollowingIndex as optional parameter
c7664b4829 Merge branch 'arshavir/NNS1-2633-3' into 'master'
47ad2b3f4e test(NNS1-2633): Matched Funding / Add fixtures tests for `settle_neurons_fund_participation`
42ada5a4bc test(NNS1-2633): Matched Funding / Add `settle_neurons_fund_participation_request_tests`
ea817ff9fe Merge branch 'arshavir/NNS1-2633' into 'master'
32623e34e8 test(NNS1-2633): Matched Funding / Add `test_cant_interleave_calls_to_settle_neurons_fund`
81464aed12 feat(NNS1-2555): Matched Funding / Begin implementing changes in NNS Governance
94f88cd5d4 Merge branch 'arshavir/NNS1-2596-5' into 'master'
097af6cd2d feat(NNS1-2596): Matched Funding / Implementation of `settle_neurons_fund_participation` in NNS Governance
6c70619e20 feat(nns/sns)!: Disable UpdateAllowedPrincipals NNS Function in mainnet code
d7e1d12bdf feat(NNS1-2620): Matched Funding / Use `rust_decimal::Decimal` in rs/nns/governance/src/neurons_fund.rs
e3c50528de feat(NNS1-2625): Matched Funding / Add new field `neurons_fund_participation` to `ProposalData`
2ba6dbea7a chore(NNS1-2555): Matched Funding / Refactor `MatchedParticipationFunction`
17dbaaca6e Merge branch 'or/BOUN-216' into 'master'
5be690effe feat(BOUN-742): The API BN is represented in the registry
b3f5d4d6b4 feat(NNS1-2596): Matched Funding / add new NNS Governance function `settle_neurons_fund_participation` [override-didc-check]
b9bc6c6766 feat: NNS1-2578: minor optimization for cast_vote_and_cascade_follow
892af36a43 feat: NNS1-2413 Implement validation logic for neuron indexes
34abd6be1b Merge branch 'rename-neuron-indexes-validation' into 'master'
f6451a2245 refactor: rename neuron_indexes_validation to neuron_data_validation
201dace54e feat(NNS1-2555): Matched Funding / add new type `MatchedParticipationFunction`
05a81701d4 feat: NNS1-2520 Apply neuron mutations based on migration progress
13d02270dc refactor: use the workspace for prost-build and bytes crate version
78836a179a chore: use the global workspace for the version of the futures crate
64ca887ddd Merge branch 'rumenov/prostdde' into 'master'
9371e6fbd8 chore: use the global workspace for deriving the prost version
2a253b6258 fix(nns): Correctly enforce the minimum_icp_xdr_rate when rewarding node providers
20bbdc57bc feat: NNS1-2520 Internalize index migration status into neuron store so that neuron store can use it for deciding whether to apply neuron mutations
be81e23265 feat: NNS1-2599 Run neuron indexes migration in a state machine test and observe effect
```
## Wasm Verification
Verify that the hash of the gzipped WASM matches the proposed hash.
```
git fetch
git checkout 3d8309b06dfd2c6c2a9e2d8b670db711faca3f1c
./gitlab-ci/container/build-ic.sh -c
sha256sum ./artifacts/canisters/governance-canister.wasm.gz
```
## Current Version
- Current Git Hash: e63cc8e68d591dd0ca3e68ec46ed1d9c2c1d7797
- Current Wasm Hash: e57bbbc109fed9c010f57a1f88edd3a016551efc906b7b6099aca65a40785b4a