NNS Updates: 2024-10-11

The NNS Team will be submitting the following upgrade proposals this Friday, 2024-10-11. DFINITY plans to vote on these proposals the following Monday.

Proposals to be Submitted


# Upgrade the Governance Canister to Commit c494c2a

__Proposer__: andre at popovit.ch\

__Source Code__: [c494c2af8bfc70a6501448dc73bf806477388738][new-commit]

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

## New Commits

```

$ git log --format="%C(auto) %h %s" ca8847547d327ce8a3bd81d25a590e01da1a3af5..c494c2af8bfc70a6501448dc73bf806477388738 -- ./rs/nns/governance ./rs/sns/init

158f799bb05 chore: Remove __get_candid_interface_tmp_hack from nns and sns canisters (#1975)

292b462f04a feat(IDX): enable bzlmod (#1959)

dbb7b9d39c5 feat(nns): Heap neuron count metric. (#1931)

0a6d829cddc feat(tests): add test target generation to rust_canbench rule (#1347)

fc98b77092b chore: Stop using NeuronId for proposal IDs (#1950)

8f736981f6c feat(IC-1579): TLA-code link for split_neuron (#913)

9feda70825b refactor(sns): Use ic-nervous-system-agent in sns-audit (#1756)

```

## Current Version

- Current Git Hash: ca8847547d327ce8a3bd81d25a590e01da1a3af5

- Current Wasm Hash: eb6b506617dca22c8d72ab1279e08f0391a7f3bf1827bc23c9d21d9bb9d0afa9

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

### WASM Verification

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

[prereqs]: https://github.com/dfinity/ic?tab=readme-ov-file#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 c494c2af8bfc70a6501448dc73bf806477388738

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


# Upgrade the Root Canister to Commit c494c2a

__Proposer__: andre at popovit.ch\

__Source Code__: [c494c2af8bfc70a6501448dc73bf806477388738][new-commit]

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

## New Commits

```

$ git log --format="%C(auto) %h %s" a0207146be211cdff83321c99e9e70baa62733c7..c494c2af8bfc70a6501448dc73bf806477388738 -- ./rs/nns/handlers/root/impl

3bbabefb704 chore(Ledger-Suite): FI-1502 move icp and icrc ledger suites (#1682)

f7791372e99 chore: remove old hyper and bump prost and tonic versions (#1597)

df1dbfc8a2a chore: Add file extension to globs (#1543)

4d09678d23d chore: sort rust derive traits (#1241)

a3129e0d7c0 test(nns): Stop generating .did files. (#1114)

cdf03740f16 chore(nns): Remove unused dependency (#1121)

```

## Current Version

- Current Git Hash: a0207146be211cdff83321c99e9e70baa62733c7

- Current Wasm Hash: c280a25dc565f8a42429cb5b969906c4c5a789381e98f6e11c247c91c4dfaac5

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

### WASM Verification

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

[prereqs]: https://github.com/dfinity/ic?tab=readme-ov-file#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 c494c2af8bfc70a6501448dc73bf806477388738

# 2. Build canisters.

./ci/container/build-ic.sh -c

# 3. Fingerprint the result.

sha256sum ./artifacts/canisters/root-canister.wasm.gz

```

This should match `wasm_module_hash` field of this proposal.


# Upgrade the Sns-wasm Canister to Commit c494c2a

__Proposer__: andre at popovit.ch\

__Source Code__: [c494c2af8bfc70a6501448dc73bf806477388738][new-commit]

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

## New Commits

```

$ git log --format="%C(auto) %h %s" 87343a880050ca72b1361138535211f5770dd52e..c494c2af8bfc70a6501448dc73bf806477388738 -- ./rs/nns/sns-wasm ./rs/sns/init

158f799bb05 chore: Remove __get_candid_interface_tmp_hack from nns and sns canisters (#1975)

fcbc91f0a58 chore: update `ic-cdk` to 0.16.0 (#1868)

3bbabefb704 chore(Ledger-Suite): FI-1502 move icp and icrc ledger suites (#1682)

e2cb3d6389e chore: upgrade prost and tonic crates (#1738)

f7791372e99 chore: remove old hyper and bump prost and tonic versions (#1597)

d66fdcb4c71 chore: bump rust version to 1.81 (#1645)

09e7929d555 refactor(nervous-system): Remove ic-sns-governance and ic-sns-init's test_feature configurations (#1606)

5610c60491c refactor(sns): Remove different sns init behavior when cfg(feature = "test") (#1609)

```

## Current Version

- Current Git Hash: 87343a880050ca72b1361138535211f5770dd52e

- Current Wasm Hash: 6dd00ebe425ba360be161c880ce3a3b3cda5a3738d6b323a9fd0366debf590ce

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

### WASM Verification

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

[prereqs]: https://github.com/dfinity/ic?tab=readme-ov-file#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 c494c2af8bfc70a6501448dc73bf806477388738

# 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

Proposals:

SNS-W: https://dashboard.internetcomputer.org/proposal/133387
Root: https://dashboard.internetcomputer.org/proposal/133386
Governance: https://dashboard.internetcomputer.org/proposal/133385

1 Like

Proposal 133385

Vote: Adopt

Hashes match.

[158f799bb05] Removes deprecated method __get_candid_interface_tmp_hack from the relevant NNS and SNS canisters.

[292b462f04a] Adds Update Bazel Lockfile workflow in order to update the lockfile for pull requests, also ensuring that it is up to date for the various supported platforms, and other implications as explained in the commit notes.

[dbb7b9d39c5] Adds a metric for governance_heap_neuron_count.

[0a6d829cddc] Version updates for canbench, pocket-ic and related packages. Adjusts totals in canbench_results yaml files.

[fc98b77092b] Changes NeuronId type to ProposalId for proposal IDs.

[8f736981f6c] Several changes related to TLA (Temporal Logic of Actions) processes, which are involved in extensive security verification and searching out bugs as outlined here. I’m unfamiliar with the concept so I’ll leave it to other reviewers to comment further.

[9feda70825b] Modifies rs/sns/audit/ to use ic-nervous-system-agent instead of ic-agent in order to fix some issues including pocket-ic test compatibility in particular.

Proposal 133386

Vote: Adopt

Hashes match.

[3bbabefb704] Adds a new directory rs/ledger_suite/ and moves ICP and ICRC1 ledger suites from rs/rosetta-api/ into their respective subdirectories within the new directory.

[f7791372e99] Version change for prost, tonic, hyper and related packages plus associated code changes.

[df1dbfc8a2a] Changes srcs = glob(["src/**"]) to srcs = glob(["src/**/*.rs"]) in several BUILD.bazel files, the effect of which is to specify that the relevant packages should only use Rust files as source files in order to prevent building errors. Similarly, srcs = glob(["proto/**"]) is changed to srcs = glob(["proto/**/*.proto"]) in several places to specify .proto files only.

[4d09678d23d] Re-orders traits within #[derive(...)] attribute lines within numerous files.

[a3129e0d7c0] Removes generate_did and generate_test_did Rust binaries from Bazel files + associated code in order to stop generating .did files in tests.

[cdf03740f16] Removes unused ic-nns-governance dependency.

3 Likes

Proposal 133385 - Governance


Hash and commits match. Voted to adopt.

Proposal 133386 - Root


Hash and commits match. Voted to adopt.

Proposal 133385 - Governance

Hash matches.

No args to check.

Proposal 133386 - Root

hash matches

No args to check.

1 Like

proposal - 133385

Vote: ADOPT

Hash: MATCH

[158f799bb05]
Removal of deprecated functions like __get_candid_interface_tmp_hack across several modules

[292b462f04a]
Add a GitHub workflow to automate updating the Bazel lockfile across different platforms (Apple Silicon, Linux, and Apple Intel). It ensures the lockfile remains up to date by running dry Bazel builds on pull requests and specific branches

[dbb7b9d39c5]
separate counts for neurons in heap and stable memory, and timestamps for the latest garbage collection and reward events

[0a6d829cddc]
Update the version of the canbench and pocket-ic packages, with canbench moving from version 0.1.4 to 0.1.7 and pocket-ic from version 3.1.0 to 5.0.0.

new dependencies such as sha2, slog, and tokio

[fc98b77092b]
Replace the use of NeuronId with a new type ProposalId in several records and request types related to proposals, such as BallotInfo, MakeProposalRequest, and RewardEvent

[8f736981f6c]
Support for TLA+ based checks in the governance canister, adding instrumentation for logging and validating critical state transitions using TLA.
New dependencies like uuid and tla_instrumentation have been integrated to enhance traceability and formal verification of specific methods like split_neuron

[9feda70825b]
Detailed auditing functionality for SNS neurons
enhanced error handling and additional methods to retrieve data such as neuron recipes and governance metadata.

proposal - 133386

Vote: ADOPT

Hash: MATCH

[3bbabefb704]
Renaming the rosetta-api directory to ledger_suite across various components related to the ICRC1 ledger and ICP ledger

[f7791372e99]
prost from version 0.12.2 to 0.13.2 and tonic from 0.11.0 to 0.12.2
better error handling and support for more efficient streaming and transport features in the tonic framework

[df1dbfc8a2a]
Update Bazel build files to use more specific file patterns, replacing glob(["src/**"]) with glob(["src/**/*.rs"])

[4d09678d23d]
Clone, Eq, PartialEq, Debug, Serialize, and Deserialize are consistently ordered.

[a3129e0d7c0]
Update Cargo.lock and BUILD.bazel files to include the new candid_parser dependency
refactoring the governance canister test structure.

[cdf03740f16]
Remove dependencies on the ic-nns-governance crate from several files related to the NNS handler root, including Cargo.toml and Bazel build files

1 Like

Proposal 133385

Hashes and commits match. Adopted.

[158f799bb05] Removed deprecated __get_candid_interface_tmp_hack from nns and sns

[dbb7b9d39c5] Added metrics for number of neurons stored in both heap and stable memory and for last proposal gc event.

[fc98b77092b] Manually defined a candid type for proposal IDs and use it in place of NeuronId to improve semantics.

Proposal 133386

Hashes and commits match. Adopted.

All commits are duplicates from previous releases except for cdf03740f16 which removes ic-nns-governance as a dependency for rs/nns/handlers/root

Proposal 133385

Vote: ADOPT

Build successful and hashes match.

[158f799bb05]: Removes the deprecated method __get_candid_interface_tmp_hack.

[292b462f04a]: Adds a new Github workflow to ensure that lockfile MODULE.bazel.lock is up to date across all platforms. Migrates Bazel dependencies from the WORKSPACE file to a new MODULE.bazel.

[dbb7b9d39c5]: Adds comments to group metrics and moves them around accordingly.

[0a6d829cddc]: Bumps canbench and pocketic versions. Adds three new deppendencies: sha2, slog and tokio.

[fc98b77092b]: Replaces the use of the type NeuronId with the ProposalId in governance.did and governance_test.did.

[8f736981f6c]: Links the split_neuron method in NNS governance to a TLA+ model to allow for checks in the Rust based tests which can be disabled with --define tla_disabled=true in the Bazel command.

[9feda70825b]: Implements several helper function to the ic-nervous-system-agent for the sns-audit. Adds the AuditError that handles several error conditions and slightly changes the error messages with several functions now using this enum to handle errors. Switches from using ic-agent to the ic-nervous-system-agent solving issues with pocket-ic and simplifying the code on the sns-audit side since the logic is now on ic-nervous-system-agent.

Proposal 133386

Vote: ADOPT

Build successful and hashes match.

[3bbabefb704]: Moves icp and icrc1 ledger suites from the rosetta-api/ subdirectory into the ledger_suite/ subdirectory as part of a restructure of the rosetta-api/ .

[f7791372e99]: Removes hyper and bumps prost and tonic versions

[df1dbfc8a2a]: Changes the globs used to select source files to be more specific by adding file extensions ( .rs for Rust or .proto for protocol files), ensuring only relevant files are included. This solves an issue where when building the compiler would complain about Vim .swp files.

[4d09678d23d]: Sorts Rust #[derive(...)] traits to maintain a consistent style

[a3129e0d7c0]: Move tests to their own test files, removes functionality in rs/nns/governance/canister/canister.rs that generated .did files, removes .did files from being passed at runtime to compile time e.g data = ["canister/governance.did"], to compile_data = ["canister/governance.did"],. Defines LIB_SRCS in build files to exclude test files from triggering a full rebuild

[cdf03740f16]: Removes the ic-nns-governance crate dependency within ‎rs/nns/handlers/root.