Proposal to elect new release rc--2025-02-20_10-16

Hello there!

We are happy to announce that voting is now open for a new IC release.
The NNS proposal is here: [IC NNS Proposal Proposal for version 7147f471c7ac27f518e6c0eeb2015952b5e93e1b submitted with ID 135421](https://dashboard.internetcomputer.org/proposal/Proposal for version 7147f471c7ac27f518e6c0eeb2015952b5e93e1b submitted with ID 135421).

Here is a summary of the changes since the last release:

Release Notes for release-2025-02-20_10-16-base (7147f471c7ac27f518e6c0eeb2015952b5e93e1b)

This release is based on changes since release-2025-02-13_03-06-base (2008d47a169c4984631c87f2efaa88798e6f14dc).

Please note that some commits may be excluded from this release if they’re not relevant, or not modifying the GuestOS image. Additionally, descriptions of some changes might have been slightly modified to fit the release notes format.

To see a full list of commits added since last release, compare the revisions on GitHub.

Features:

  • 49d6101af Consensus,Interface: Call crypto in vetKD payload builder (#3905)
  • 7dda5ff7f Consensus,Interface: Don’t use rsync to copy the state during recoveries (#3853)
  • 3deb76dff Consensus,Interface: Bitcoin serialize blocks first (#3919)
  • 5d0fcce40 Execution,Interface: Bump allowed code section size (#4012)
  • 20b0caf9e Execution,Interface: Add a metric tracking Wasm code section sizes (#3983)
  • 396b461cd Interface,Message Routing: Add size limits as fields to the stream builder (#3885)

Bugfixes:

  • 4eec0b4b3 Consensus,Interface: Don’t panic in make_registry_cup (#3980)
  • 20b675c6e Consensus,Interface: Don’t panic in get_dkg_summary_from_cup_contents (#3974)
  • 9d6eea446 Consensus,Interface: Use correct registry version to validate dealings inside of block payloads (#3944)
  • 0923aa8f3 Execution,Interface: Hook condition should be checked after every mgmt canister call (#3988)
  • a286970c5 Owners: bump cloudflare-rs crate (#3927)

Chores:

  • 7147f471c Consensus,Interface: Allow any order of change actions in purging_non_finalized_blocks_test (#4033)
  • 43add58cb Consensus,Interface: add some unit tests and a metric for how long it takes to fetch NNS delegations + how big they are (#4017)
  • 9ef5605e1 Consensus,Interface: Inline make_genesis_summary test function (#3970)
  • d054caa61 Crypto: Update version of ic-ed25519 to 0.2 (#3946)
  • 882e7af8e Crypto,Interface(crypto): Move getrandom wasm32-unknown-unknown workaround to packages (#3926)
  • 2fd87b60a Crypto,Interface(crypto): Change key derivation used in VetKD to BLS12-381 hash_to_scalar (#3736)
  • f577fe349 Execution,Interface: Upgrade Wasm crates to wasmtime 29 (#3929)
  • 59abceebc Interface(Ledger): Update some comments (#3847)
  • 810eeb14c Interface: use cdk::api::in_replicated_execution (#3949)
  • 6612119c3 Interface: Bump ic_cdk version (#3939)
  • 4d9768af1 Interface,Message Routing: Update debug assertions of Tip thread; flush PageMaps in make_unvalidated_checkpoint (#3950)
  • 711b78eb0 Owners: bump ic-http-gateway lib (#3995)
  • 4e132abd8 Node(IDX): Simplify versioning (#3984)
  • 483f05324 Node: Processes robust against restarts (#3693)
  • 1e014f09f Node: Update Base Image Refs [2025-02-13-0813] (#3931)

Refactoring:

  • 069dc97d0 Consensus,Interface: Extract common functionality of verifying NiDKG dealings (#3951)
  • 7d99df628 Execution,Interface: Remove install_code from production code and move it to the tests that use it (#4015)
  • 075a36404 Execution,Interface: Use two instances of the query service for queries and https outcall transform functions (#3992)
  • b368e3de3 Execution,Interface: Take cycles from call context when a refund is to be returned (#3985)
  • 4627f3307 Execution,Interface: Move log_dirty_pages to the module where it’s used (#3957)
  • 57464b9ab Execution,Interface: Simplify logic to get a CallOrigin from a Query (#3953)
  • 9747838c6 Execution,Interface: Rename reached to instructions_reached (#3952)
  • 125db7f4f Execution,Interface: Check wasm execution output only in sandbox (#3728)
  • cba557d53 Node: check-hardware.sh (#3679)

Tests:

  • edcb5ab41 Consensus,Interface: vetKD payload builder/verifier unit tests (#3886)

Full list of changes (including the ones that are not relevant to GuestOS) can be found on GitHub.

IC-OS Verification

To build and verify the IC-OS disk image, run:

# From https://github.com/dfinity/ic#verifying-releases
sudo apt-get install -y curl && curl --proto '=https' --tlsv1.2 -sSLO https://raw.githubusercontent.com/dfinity/ic/7147f471c7ac27f518e6c0eeb2015952b5e93e1b/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c 7147f471c7ac27f518e6c0eeb2015952b5e93e1b --guestos

The two SHA256 sums printed above from a) the downloaded CDN image and b) the locally built image, must be identical, and must match the SHA256 from the payload of the NNS proposal.

While not required for this NNS proposal, as we are only electing a new GuestOS version here, you have the option to verify the build reproducibility of the HostOS by passing --hostos to the script above instead of --guestos, or the SetupOS by passing --setupos.

1 Like

Hello there!

We are happy to announce that voting is now open for a new IC release.
The NNS proposal is here: [IC NNS Proposal Proposal for version 2f02a660f6f17b5a78c13d9b372f74c8228f79b8 submitted with ID 135422](https://dashboard.internetcomputer.org/proposal/Proposal for version 2f02a660f6f17b5a78c13d9b372f74c8228f79b8 submitted with ID 135422).

Here is a summary of the changes since the last release:

Release Notes for release-2025-02-20_10-16-disable-best-effort-messaging (2f02a660f6f17b5a78c13d9b372f74c8228f79b8)

This release is based on changes since release-2025-02-20_10-16-base (7147f471c7ac27f518e6c0eeb2015952b5e93e1b).

Please note that some commits may be excluded from this release if they’re not relevant, or not modifying the GuestOS image. Additionally, descriptions of some changes might have been slightly modified to fit the release notes format.

To see a full list of commits added since last release, compare the revisions on GitHub.

Other changes:

  • 2f02a660f Consensus,Execution,Interface: Revert “feat(MR): Roll out best-effort calls to the first few subnets (#3816)”

IC-OS Verification

To build and verify the IC-OS disk image, run:

# From https://github.com/dfinity/ic#verifying-releases
sudo apt-get install -y curl && curl --proto '=https' --tlsv1.2 -sSLO https://raw.githubusercontent.com/dfinity/ic/2f02a660f6f17b5a78c13d9b372f74c8228f79b8/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c 2f02a660f6f17b5a78c13d9b372f74c8228f79b8 --guestos

The two SHA256 sums printed above from a) the downloaded CDN image and b) the locally built image, must be identical, and must match the SHA256 from the payload of the NNS proposal.

While not required for this NNS proposal, as we are only electing a new GuestOS version here, you have the option to verify the build reproducibility of the HostOS by passing --hostos to the script above instead of --guestos, or the SetupOS by passing --setupos.

1 Like

Proposal 135421 - Hamish | CodeGov

Vote: Adopt
Reason: I have successfully run the build script and in my opinion all the commits listed look fine and match their descriptions.

Full review:

Features:

  • 49d6101af Consensus,Interface: Call crypto in vetKD payload builder (#3905)
    Review: Looks fine + matches description
    Notes: Updates the VetKdPayloadBuilderImpl to call into the crypto component to combine VetKD key shares and to verify encrypted keys + adds metrics to measure VetKD usage and track duration to build payloads and validate keys.

  • 7dda5ff7f Consensus,Interface: Don’t use rsync to copy the state during recoveries (#3853)
    Review: Looks fine + matches description
    Notes: Adds the checkpoint state to the exclusion list passed to rsync when recovering from a local IC state, then instead copies the checkpoint data into the recovery directory using cp + adds a system test to cover local recoveries.

  • 3deb76dff Consensus,Interface: Bitcoin serialize blocks first (#3919)
    Review: Looks fine + matches description
    Notes: Updates the Bitcoin adapter such that blocks are serialized before being stored in the block cache, making block retrieval more lightweight.

  • 5d0fcce40 Execution,Interface: Bump allowed code section size (#4012)
    Review: Looks fine + matches description
    Notes: Bumps the max allowed wasm code section to 11MB (we requested this as we exceeded the previous limit, thanks DFINITY!).

  • 20b0caf9e Execution,Interface: Add a metric tracking Wasm code section sizes (#3983)
    Review: Looks fine + matches description
    Notes: Adds the code_section_size histogram metric and writes to it after compiling each canister wasm.

  • 396b461cd Interface,Message Routing: Add size limits as fields to the stream builder (#3885)
    Review: Looks fine + matches description
    Notes: Adds max_stream_messages and target_stream_size_bytes as fields to StreamBuilderImpl so that they can differ between mainnet and tests where it can be useful to have small limits so that the limits can be reached quickly during testing.

Bugfixes:

  • 4eec0b4b3 Consensus,Interface: Don’t panic in make_registry_cup (#3980)
    Review: Looks fine + matches description
    Notes: Updates make_registry_cup by replacing 3 calls to expect(..) with code which instead logs a warning then returns None.

  • 20b675c6e Consensus,Interface: Don’t panic in get_dkg_summary_from_cup_contents (#3974)
    Review: Looks fine + matches description
    Notes: Updates get_dkg_summary_from_cup_contents to avoid using expect(..) and explicit panics and instead returns an Err(String) which is logged, and then the process continues.

  • 9d6eea446 Consensus,Interface: Use correct registry version to validate dealings inside of block payloads (#3944)
    Review: Looks fine + matches description
    Notes: Modified the payload validator so that when verifying each NiDKG message it verifies each message using the registry version for that specific message rather than always using the latest registry version.

  • 0923aa8f3 Execution,Interface: Hook condition should be checked after every mgmt canister call (#3988)
    Review: Looks fine + matches description
    Notes: Moves the update_on_low_wasm_memory_hook_condition check to within finish_subnet_message_execution so that it is run after every call to the management canister.

  • a286970c5 Owners: bump cloudflare-rs crate (#3927)
    Review: Looks fine + matches description
    Notes: Bumps the cloudflare-rs git dependency to a later commit.

Chores:

  • 7147f471c Consensus,Interface: Allow any order of change actions in purging_non_finalized_blocks_test (#4033)
    Review: Looks fine + matches description
    Notes: Makes the consensus purger tests more resilient by making remove_from_validated_changeset a set rather than a list so that ordering doesn’t matter.

  • 43add58cb Consensus,Interface: add some unit tests and a metric for how long it takes to fetch NNS delegations + how big they are (#4017)
    Review: Looks fine + matches description
    Notes: Adds 2 metrics, nns_delegation_manager_update_duration and nns_delegation_manager_delegation_size to track how long it takes to fetch NNS delegations and track their sizes + adds some unit tests which cover loading NNS delegations.

  • 9ef5605e1 Consensus,Interface: Inline make_genesis_summary test function (#3970)
    Review: Looks fine + matches description
    Notes: Removes the make_genesis_summary function which was only used by tests, then updates those tests to instead use get_dkg_summary_from_cup_contents.

  • d054caa61 Crypto: Update version of ic-ed25519 to 0.2 (#3946)
    Review: Looks fine + matches description
    Notes: Bumps ic-ed25519 to 0.2.0 and updates its changelog in preparation for it being published to crates.io.

  • 882e7af8e Crypto,Interface(crypto): Move getrandom wasm32-unknown-unknown workaround to packages (#3926)
    Review: Looks fine + matches description
    Notes: Renames ic-crypto-getrandom-for-wasm to ic-dummy-getrandom-for-wasm to more accurately convey that it only provides dummy functionality and solely exists as a workaround to make the getrandom crate successfully build when targeting wasm.

  • 2fd87b60a Crypto,Interface(crypto): Change key derivation used in VetKD to BLS12-381 hash_to_scalar (#3736)
    Review: Looks fine + matches description
    Notes: Switches how the derivation path is calculated for VetKeys such that the hash is generated by RFC 9380’s hash_to_field as opposed to using SHAKE, allowing SHAKE to be removed and therefore reducing the total number of cryptographic primitives in the system.

  • f577fe349 Execution,Interface: Upgrade Wasm crates to wasmtime 29 (#3929)
    Review: Looks fine + matches description
    Notes: Bumps a few wasm related crates to later versions (eg. wasm-encoder, wasm-smith, wasmparser, etc).

  • 59abceebc Interface(Ledger): Update some comments (#3847)
    Review: Looks fine + matches description
    Notes: Updates the wording within a few comments.

  • 810eeb14c Interface: use cdk::api::in_replicated_execution (#3949)
    Review: Looks fine + matches description
    Notes: Switches a few usages of ic_cdk::api::data_certificate().is_none() to instead use ic_cdk::api::in_replicated_execution() which much more clearly conveys the intention.

  • 6612119c3 Interface: Bump ic_cdk version (#3939)
    Review: Looks fine + matches description
    Notes: Bumps ic-cdk and ic-cdk-macros to 0.17.1.

  • 4d9768af1 Interface,Message Routing: Update debug assertions of Tip thread; flush PageMaps in make_unvalidated_checkpoint (#3950)
    Review: Looks fine + matches description
    Notes: Updates make_unvalidated_checkpoint to first flush all page maps to disk, then also updates TipState to contain more data and adds a few debug assertions to validate its data at various stages.

  • 711b78eb0 Owners: bump ic-http-gateway lib (#3995)
    Review: Looks fine + matches description
    Notes: Bumps ic-http-gateway from 0.1.0 to 0.2.0 and also bumps a few related packages.

  • 4e132abd8 Node(IDX): Simplify versioning (#3984)
    Review: Looks fine + matches description
    Notes: Simplifies how release artifacts are stamps with versions by simply using the commit Id + commit timestamp.

  • 483f05324 Node: Processes robust against restarts (#3693)
    Review: Looks fine + matches description
    Notes: Adds Restart=on-failure and RestartSec=10 to a few IC services to ensure they restart after any failures.

  • 1e014f09f Node: Update Base Image Refs [2025-02-13-0813] (#3931)
    Review: Looks fine + matches description
    Notes: Updates the base IC-OS image references.

Refactoring:

  • 069dc97d0 Consensus,Interface: Extract common functionality of verifying NiDKG dealings (#3951)
    Review: Looks fine + matches description
    Notes: Adds the crypto_validate_dealing function which encapsulates the logic that was previously duplicated within validate_dealings_for_dealer and validate_dealings_payload, then updates those 2 functions to make use of crypto_validate_dealing.

  • 7d99df628 Execution,Interface: Remove install_code from production code and move it to the tests that use it (#4015)
    Review: Looks fine + matches description
    Notes: Removes install_code from CanisterManager since it was only used by tests, then updates the usages in tests to instead use install_code_dts (which is also used in production).

  • 075a36404 Execution,Interface: Use two instances of the query service for queries and https outcall transform functions (#3992)
    Review: Looks fine + matches description
    Notes: Uses 2 instances of the HttpQueryHandler, one for handling normal query calls and one for handling HTTP outcall transform functions, this improves scalability by removing resource contention between the 2.

  • b368e3de3 Execution,Interface: Take cycles from call context when a refund is to be returned (#3985)
    Review: Looks fine + matches description
    Notes: Updates how cycles refunds are handled by always setting the available cycles to 0 after issuing a refund, which allows the special casing within ic0_msg_cycles_accept_helper to be removed since the available_cycles is now always accurate.

  • 4627f3307 Execution,Interface: Move log_dirty_pages to the module where it’s used (#3957)
    Review: Looks fine + matches description
    Notes: Simply moves the location of the log_dirty_pages function within the execution environment package.

  • 57464b9ab Execution,Interface: Simplify logic to get a CallOrigin from a Query (#3953)
    Review: Looks fine + matches description
    Notes: Simplifies how call_origin is calculated by using of query.source().into() rather than using a match statement and then handling the various QuerySource types.

  • 9747838c6 Execution,Interface: Rename reached to instructions_reached (#3952)
    Review: Looks fine + matches description
    Notes: Renames RoundLimits::reached to instructions_reached for clarity.

  • 125db7f4f Execution,Interface: Check wasm execution output only in sandbox (#3728)
    Review: Looks fine + matches description
    Notes: Modifies SystemStateModifications::apply_changes so that it additionally handles appending canister logs and bumping the canister version so that these actions can be removed from the various places they were previously handled.

  • cba557d53 Node: check-hardware.sh (#3679)
    Review: Looks fine + matches description
    Notes: Refactors the check-hardware.sh by adding comments and renaming things for clarity.

Tests:

  • edcb5ab41 Consensus,Interface: vetKD payload builder/verifier unit tests (#3886)
    Review: Looks fine + matches description
    Notes: Adds some VetKD unit tests.

Proposal 135422

Vote: Adopt
Reason: I have successfully run the build script and there is only a single additional commit which disables the new best-effort calls feature. This is done as a precaution in case there is an issue with the feature and it needs to quickly be disabled.

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

Vote: ADOPT

Reason:

All commits match their description and no errors were found. The verification build hash also matches release_package_sha256_hex.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: MATCH

Overall Summary:

The execution environment now includes combine_encrypted_key_shares and verify_encrypted_key for secure threshold key processing, introduces structured error handling, and enforces centralized stream limits with TARGET_STREAM_SIZE_BYTES and MAX_STREAM_MESSAGES.

The state_manager refactor integrates page map flushing into checkpoint creation, the recovery process now supports both local and remote operations via DataLocation, and https_outcalls_service improves HTTPS request handling with dedicated metrics.

Commits Summary

Features:
49d6101af
Implements combine_encrypted_key_shares and verify_encrypted_key in the crypto interface, handling VetKdKeyShareCombinationError and VetKdKeyVerificationError to securely process threshold key shares. Error handling is refined with ErrorReproducibility. Module metrics.rs has been added to track performance and error metrics related to VetKD payload building and validation.

7dda5ff7f
This commit refactors the recovery process for subnets by replacing UploadMethod with a more generalized DataLocation type, allowing both local and remote recovery operations. It introduces better handling of state downloads and uploads, including a new CopyLocalIcStateStep for local recoveries, and adds a wait_for_cup_node parameter to specify which node to poll for recovery progress.

3deb76dff
The BlockchainState now stores serialized blocks SerializedBlock instead of full Block structures. Methods that previously returned Arc<Block> now return Arc<SerializedBlock>, requiring explicit deserialization where necessary, including in get_successor_blocks() and get_block(). Serializing blocks saves memory but adds serialization/deserialization overhead.

5d0fcce40
Matches description Increase the size of allowed canister Wasm code section sizes from 10 MiB to 11 MiB.

20b0caf9e
Modifies the CompilationResult struct by adding a code_section_size: NumBytes field to store the size of a WebAssembly module’s code section. The HypervisorMetrics module now records the code_section_size using a histogram with linear buckets up to 10 MiB.

396b461cd
The commit centralizes stream limit configuration by introducing two constants, TARGET_STREAM_SIZE_BYTES (10 MiB) and MAX_STREAM_MESSAGES (10,000). MessageRoutingImpl, SyncMessageRouting, and StreamBuilderImpl dynamically enforce stream size and message count limits.

Bugfixes:
4eec0b4b3
Adds explicit checks to ensure that both low and high threshold DKG transcripts are present in the CUP contents before proceeding with CUP construction, returning None and logging a warning if either is missing.

20b675c6e
get_dkg_summary_from_cup_contents function now returns a Result<Summary, String> instead of a Summary, enabling it to handle errors gracefully—such as missing transcripts, decoding failures, or invalid key IDs—by returning descriptive error messages rather than panicking with expect.

9d6eea446
Updated validate_dealings_payload function now uses the DKG config’s registry_version from the summary config.registry_version() to verify the signature of each dealing with crypto.verify(message, config.registry_version()).

0923aa8f3
Previously, update_on_low_wasm_memory_hook_condition function was invoked automatically after setting the wasm_memory_limit in canister_manager.rs; the update is now selectively triggered post successful subnet message execution with a valid canister_id.

a286970c5
Matches description bump cloudflare-rs crate.

Chores:
7147f471c
purging_non_finalized_blocks_test now uses a HashSet instead of a Vec for collecting remove_from_validated_changeset, eliminating the need to adapt the test’s expectations when the order of block proposals changes.

43add58cb
DelegationManagerMetrics, which tracks update duration and delegation size. New tests to verify root delegation behavior for NNS and non-NNS subnets.

9ef5605e1
Refactors DKG summary creation by replacing make_genesis_summary with get_dkg_summary_from_cup_contents, removing retry logic and shifting responsibility for fetching CUP contents to the caller. Improves error visibility by requiring explicit handling of registry failures.

d054caa61
Matches description Update version of ic-ed25519 to 0.2.

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

2fd87b60a
Refactors the cryptographic implementation by replacing ic-sha3 with a direct HashToField implementation for hashing to scalar values in BLS12-381. The RandomOracle abstraction and SHAKE256-based hashing are removed.

f577fe349
Updates WASM-related dependencies, including wasm-encoder, wasmparser, and wasmprinter, to their latest versions. rs/wasm_transform adjustments to function type handling and memory optimization using Cow.

59abceebc
Fix comments on ledger_core/src/balances.rs.

810eeb14c
Refactors canister code to use ic_cdk::api::in_replicated_execution() instead of ic_cdk::api::data_certificate().is_none() for detecting replicated execution.

6612119c3
Update ic-cdk, ic-cdk-macros, ic-cdk-timers. LogVisibility type has allowed_viewers variant.

4d9768af1
Refactors state_manager by integrating page map flushing and delta stripping into the checkpoint creation process. It relocates checkpoint-related logic to checkpoint.rs, introduces the PageMapType enum for unified page map handling.

711b78eb0
Upgrade ic-http-gateway lib.

4e132abd8
Replace the dynamic ic_version_or_git_sha mechanism with a static write_info_file_var approach. It consolidates version handling into a single version.txt file, removes bazel-timestamp.txt, and ensures dynamic versioning is only enabled via --stamp on protected branches.

483f05324
Matches description All critical services should restart on failure

1e014f09f
Update base images.

Refactoring:
069dc97d0
crypto_validate_dealing to unify signature and dealing validation. PayloadValidationError for structured error handling.

7d99df628
Matches description Remove install_code from production code and move it to the tests that use it

075a36404
https_outcalls_service to ExecutionServices, allowing specialized handling of HTTPS outcalls separate from regular query execution. Modifies HttpQueryHandler to support namespaced metrics.

b368e3de3 take_available_cycles method in CallContext, ensuring that cycles are retrieved and cleared consistently when finalizing responses. The CallContextManager now uses this method, and an unnecessary check in SystemApiImpl for handling cycle acceptance post-reply is removed.

4627f3307
Matches description Move log_dirty_pages to the module where it's used.

57464b9ab
Matches description rely on that to construct a CallOrigin in the query handler instead of trying to handle the different cases.

9747838c6
Matches description Rename reached to instructions_reached .

125db7f4f
should_bump_canister_version flag to control when canister versions are incremented, preventing unnecessary updates on failed executions or special cases like install_code. Trap logging is centralized in SystemApiImpl.

cba557d53
Refactors the hardware verification script by restructuring it into clearly defined sections. It renames variables for clarity, introduces reusable helper functions like get_cpu_info_json and verify_disks_helper to reduce redundancy.

Tests:
edcb5ab41
Matches description Set timeout to long for Rosetta ICP integration tests .

proposal - 135422 – Cyberowl | CodeGov

Vote: ADOPT

Reason:

One commit to revert “Roll out best-effort calls to the first few subnets”. Commit matches description and no errors were found. The verification build hash also matches release_package_sha256_hex.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: 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 135421 – ilbert | CodeGov

Vote: ADOPTED.
Reason: All reviewed commits match their description and hashes match.

Review:
For the Execution and Runtime layers, the main changes introduced in this proposal are:

  • Minor fixes and refactoring

I’ve reviewed all the commits listed in the proposal, for the Execution and Runtime layers:

5d0fcce40:
Changes the MAX_CODE_SECTION_SIZE_IN_BYTES constant from 10 MiB to 11 MiB.

20b0caf9e:
Adds the code_section_size field to the CompilationResult and WasmValidationDetails structs. The field is calculated in the validate_wasm_binary function from the result of the check_code_section_size function.
This field is used in the observe_compilation_metrics method of the HypervisorMetrics struct to observe the newly introduced code_section_size histogram metric.

0923aa8f3:
Removes the call to update_on_low_wasm_memory_hook_condition in the do_update_settings method of the CanisterManager struct.
Changes the response field of the ExecuteSubnetMessageResult::Finished variant to include an optional canister id in the Ok result and changes the code where this variant is constructed and used. This way, the returned canister id can be used in the finish_subnet_message_execution method of the ExecutionEnvironment struct to retrieve the corresponding canister state and call the update_on_low_wasm_memory_hook_condition hook.

f577fe349:
Matches description.

7d99df628:
Removes the install_code method from the CanisterManager struct.

075a36404:
Adds the https_outcalls_service field to the ExecutionServices struct, of type QueryExecutionService. This newly introduced service is used in the construct_ic_stack function to instantiate the HTTPS Outcalls adapter.

b368e3de3:
Adds the take_available_cycles method to the CallContext struct, which sets the available cycles of the context to 0 and returns the previous available cycles. This method is used instead of the direct access to the available_cycles field in the on_canister_result method of the CallContextManager struct.

4627f3307:

Moves the log_dirty_pages function to the common module of the execution environment.

57464b9ab:
Matches description.

9747838c6:
Matches description.

125db7f4f:
Removes the canister_log field from the WasmExecutionOutput struct.
Adds the should_bump_canister_version boolean field to the SystemStateModifications struct, which is used in the apply_changes method of the same struct to increase the canister_version field of the system state by one if set to true. This way, we don’t need to check for the condition to update the canister version anywhere else in the code. The apply_changes method now appends the logs to the canister logs of the system state too.
Refactors the take_system_state_modifications method of the SystemApiImpl struct to handle all the ApiType variants explicitly. The method returns a SystemStateModifications struct, for which this method sets the should_bump_canister_version field.
This method also calls the newly introduced add_canister_log_for_trap method, so that we don’t have to care about checking the conditions for registering the logs anywhere else in the code.


Proposal 135422 – ilbert | CodeGov

Vote: ADOPTED.
Reason: All reviewed commits match their description and hashes match.

Review:
This release is the same as the one in 135421 with the addition of the commit 2f02a660f, which matches its description.

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.

Proposal: 135421 | Manvick - Zenith Code

Summary:

  1. Build Hash: Build has from the proposal, local build and CDN matches and is “9b1919ffc0e0dd6f4646280edf2c745cbdc7b80e7b23b23601f881e99e53005d”.
  2. Summary: The release notes matches the code changes
  3. Vote: I vote to adopt the proposals

Detailed Review:

Features:

  • 49d6101af Consensus,Interface: Call crypto in vetKD payload builder (#3905)
    Notes: In this PR VetKdPayloadBuilderImpl is updated to include the logic of calling crypto.combine_encrypted_key_shares to combine encrypted keyshares, which was not implemented before. This PR also adds metrics to measure success and failure of such operations.
    Review: Code changes look good and match release notes.
  • 7dda5ff7f Consensus,Interface: Don’t use rsync to copy the state during recoveries (#3853)
    Notes: This PR attempts to refactor and simplify the recovery process of a node in a subnet. UploadMethod is now replaced with DataLocation method to support for local and remote recovery options. Struct CopyLocalIcStateStep is defined and implemented, and adds checkpoint to the exclusion list passed to rsync, and instead forces to use cp to copy data into recovery directory. This PR also adds system test around this local recovery process.
    Review: Code changes look good and match release notes.
  • 3deb76dff Consensus,Interface: Bitcoin serialize blocks first (#3919)
    Notes: bitcoin blocks which were seriealied before at the request time, are now serlieized after being received and validated. This has improved get_successors requests lighter.
    Review: Code changes look good and match release notes.
  • 5d0fcce40 Execution,Interface: Bump allowed code section size (#4012)
    Notes: Community demanded to increase the size of allowed wasm code section to be increased, which is now increased to 11MB from 10MB. Constants like MAX_CODE_SECTION_SIZE_IN_BYTES are updated to support this.
    Review: Code changes look good and match release notes.
  • 20b0caf9e Execution,Interface: Add a metric tracking Wasm code section sizes (#3983)
    Notes: code_section_size metric is now added to track how users are hitting the limit on wasm code section sizes. This value is tracked each time the wasm is compiled.
    Review: Code changes look good and match release notes.
  • 396b461cd Interface,Message Routing: Add size limits as fields to the stream builder (#3885)
    Notes: To make tests efficient and avoid unnecessary filler requests, max_stream_messages and target_stream_size_bytes fields are added to message_routing.rs.
    Review: Code changes look good and match release notes.

Bugfixes:

  • 4eec0b4b3 Consensus,Interface: Don’t panic in make_registry_cup (#3980)
    Notes: Three panic statements have been replaced with warnings ( and logging ) around deriving low_dkg_id, high_dkg_id and cup_contents.
    Review: Code changes look good and match release notes.
  • 20b675c6e Consensus,Interface: Don’t panic in get_dkg_summary_from_cup_contents (#3974)
    Notes: Multiple expect statements are replaced in get_dkg_summary_from_cup_contents to avoid panic and replaced with an error Err(String) which could then be softly handled by the caller.
    Review: Code changes look good and match release notes.
  • 9d6eea446 Consensus,Interface: Use correct registry version to validate dealings inside of block payloads (#3944)
    Notes: Updated the payload validator to verify each NiDKG message using the registry version specific to that message, instead of defaulting to the latest registry version for all verifications.
    Review: Code changes look good and match release notes.
  • 0923aa8f3 Execution,Interface: Hook condition should be checked after every mgmt canister call (#3988)
    Notes: low-wasm-memory hook is now checked after every management canister call. This is done by moving the call canister_state.update_on_low_wasm_memory_hook_condition(); to finish_subnet_message_execution function
    Review: Code changes look good and match release notes.
  • a286970c5 Owners: bump cloudflare-rs crate (#3927)
    Notes: Updates the cloudflare-rs to later commits.
    Review: Code changes look good and match release notes.

Chores:

  • 7147f471c Consensus,Interface: Allow any order of change actions in purging_non_finalized_blocks_test (#4033)
    Notes: Variable remove_from_validated_changeset has been changed from vector to hashset, to allow change actions in purging_non_finalized_blocks_test to be in any order to make tests (test_purger) more resilient.
    Review: Code changes look good and match release notes.
  • 43add58cb Consensus,Interface: add some unit tests and a metric for how long it takes to fetch NNS delegations + how big they are (#4017)
    Notes: Two new metrics are added to NNS delegations by adding nns_delegation_manager_update_duration and nns_delegation_manager_delegation_size in DelegationManagerMetrics to track duration of nns delegation in seconds and the size of delegations. Also adds some unit tests around nns delegations.
    Review: Code changes look good and match release notes.
  • 9ef5605e1 Consensus,Interface: Inline make_genesis_summary test function (#3970)
    Notes: Function make_genesis_summary is removed as it was only used by tests. Also updates the tests to use get_dkg_summary_from_cup_contents() instead of make_genesis_summary().
    Review: Code changes look good and match release notes.
  • d054caa61 Crypto: Update version of ic-ed25519 to 0.2 (#3946)
    Notes: Version of ic-ed25519 is updated to 0.2, along with this changelog is also updated to prepare this package to be released to crates.io
    Review: Code changes look good and match release notes.
  • 882e7af8e Crypto,Interface(crypto): Move getrandom wasm32-unknown-unknown workaround to packages (#3926)
    Notes: ic-crypto-getrandom-for-wasm is renamed to ic-dummy-getrandom-for-wasm for more accurate representation of this dummy ( non functional ) functionality which was only there to support the compilation of get random successful.
    Review: Code changes look good and match release notes.
  • 2fd87b60a Crypto,Interface(crypto): Change key derivation used in VetKD to BLS12-381 hash_to_scalar (#3736)
    Notes: Originally SHAKE was used to support key derivation in VetKD. For production use it is switched to hash_to_scalar a variant of RFC 9380’s hash_to_field . This will also slightly reduce the number of cryptographic primitives.
    Review: Code changes look good and match release notes.
  • f577fe349 Execution,Interface: Upgrade Wasm crates to wasmtime 29 (#3929)
    Notes: Certain wasm crates like wasm-encoder, wasparser, wasmprinter are upgraded.
    Review: Code changes look good and match release notes.
  • 59abceebc Interface(Ledger): Update some comments (#3847)
    Notes: Minor comments updates in ledger core.
    Review: Code changes look good and match release notes.
  • 810eeb14c Interface: use cdk::api::in_replicated_execution (#3949)
    Notes: The PR changes the code to use the newer functionality of in_replicated_execution rather than ic_cdk::api::data_certificate().is_none() to figure out if the canister is running in replicated or query mode
    Review: Code changes look good and match release notes.
  • 6612119c3 Interface: Bump ic_cdk version (#3939)
    Notes: ic-cdk and ic-cdk-macros both are updated to 0.17.1
    Review: Code changes look good and match release notes.
  • 4d9768af1 Interface,Message Routing: Update debug assertions of Tip thread; flush PageMaps in make_unvalidated_checkpoint (#3950)
    Notes: Updates the function make_unvalidated_checkpoint to first call flush_canister_snapshots_and_page_maps and strip_page_map_deltas and also changes TipState to be a struct from just being an enum. Some debug assertions are also added to validates its data.
    Review: Code changes look good and match release notes.
  • 711b78eb0 Owners: bump ic-http-gateway lib (#3995)
    Notes: ic-http-gateway has been upgraded from 0.1.0 to 0.2.0 along with some other packages.
    Review: Code changes look good and match release notes.
  • 4e132abd8 Node(IDX): Simplify versioning (#3984)
    Notes: The PR simplifies stamping the release artifact with a version by using head commit id + timestamp in release mode.
    Review: Code changes look good and match release notes.
  • 483f05324 Node: Processes robust against restarts (#3693)
    Notes: This PR adds Restart=on-failure and RestartSec=10 to a few services around generating network configs.
    Review: Code changes look good and match release notes.
  • 1e014f09f Node: Update Base Image Refs [2025-02-13-0813] (#3931)
    Notes: ic-os base image references are updated.
    Review: Code changes look good and match release notes.

Refactoring:

  • 069dc97d0 Consensus,Interface: Extract common functionality of verifying NiDKG dealings (#3951)
    Notes: A new function crypto_validate_dealing() is introduce to extract out common functionality, and then the two functions validate_dealings_for_dealer() and validate_dealings_payload() are modified to use this new function.
    Review: Code changes look good and match release notes.
  • 7d99df628 Execution,Interface: Remove install_code from production code and move it to the tests that use it (#4015)
    Notes: CanisterManager::install_code is a legacy function and is now removed from production code. Now the tests use install_code_dts.
    Review: Code changes look good and match release notes.
  • 075a36404 Execution,Interface: Use two instances of the query service for queries and https outcall transform functions (#3992)
    Notes: Again goes back to use the two instances of HttpQueryHandler , one for handling http outcalls transform function, and other to handle normal query calls to improve performance and scalability.
    Review: Code changes look good and match release notes.
  • b368e3de3 Execution,Interface: Take cycles from call context when a refund is to be returned (#3985)
    Notes: context.available_cycles is now replaced with context.take_available_cycles() while returning a refund.
    Review: Code changes look good and match release notes.
  • 4627f3307 Execution,Interface: Move log_dirty_pages to the module where it’s used (#3957)
    Notes: A small refactoring to move log_dirty_pages() function closer to where it is used.
    Review: Code changes look good and match release notes.
  • 57464b9ab Execution,Interface: Simplify logic to get a CallOrigin from a Query (#3953)
    Notes: A simple change to calculate call_origin by using query.source().into(), instead of a match on QuerySource::User or QuerySource::Anonymous.
    Review: Code changes look good and match release notes.
  • 9747838c6 Execution,Interface: Rename reached to instructions_reached (#3952)
    Notes: A simple rename of reached() function to instructions_reached() for better clarity.
    Review: Code changes look good and match release notes.
  • 125db7f4f Execution,Interface: Check wasm execution output only in sandbox (#3728)
    Notes: To avoid appending canister logs at various places it is now added to apply_changes function of SystemStateModifications itself.
    Review: Code changes look good and match release notes.
  • cba557d53 Node: check-hardware.sh (#3679)
    Notes: checkphardware.sh script is not refactored with some comments and cleanups.
    Review: Code changes look good and match release notes.

Tests:

  • edcb5ab41 Consensus,Interface: vetKD payload builder/verifier unit tests (#3886)
    Notes: Sme vetKD unit tests are added.
    Review: Code changes look good and match release notes.

Proposal: 135422 | Manvick - Zenithcode

Summary:

  1. Build Hash: Build has from the proposal, local build and CDN matches and is “1562de62fbff6c945e2a3c720eeae505be5b80fc7a489d0ffc2a62c751b8e95d”.
  2. Summary: The release notes matches the code changes
  3. Vote: I vote to adopt the proposals

Detailed Review:

Other changes:

  • 2f02a660f Consensus,Execution,Interface: Revert “feat(MR): Roll out best-effort calls to the first few subnets (#3816)”
    Notes: This disables best effort calls features on specific subnets.
    Review: Code changes look good and match release notes.
1 Like

Proposal 135421 | Yuvika - Zentih Code

Summary

  1. Vote: Adopt
  2. Hash: Hashes match
  3. Reasons to adopt: Builds fine + hashes match + release notes match the commits.

Commits

Features:

  • 49d6101af
    Summary: Call crypto in vetKD payload builder.
    Notes: Update VetKD processing by integrating crypto component calls for key share combination and encrypted key verification, while also adding metrics to monitor usage and performance.
    Review: The description matches the code changes.

  • 7dda5ff7f
    Summary: Don’t use rsync to copy the state during recoveries.
    Notes: Refactor local IC state recovery by excluding the checkpoint from rsync, directly copying it with cp, and adding a system test for verification.
    Review: The description matches the code changes.

  • 3deb76dff
    Summary: Bitcoin serialize blocks first.
    Notes: Optimize Bitcoin adapter block retrieval by serializing blocks before caching, reducing the overhead of subsequent retrievals.
    Review: The description matches the code changes.

  • 5d0fcce40
    Summary: Bump allowed code section size
    Notes: Increase the maximum allowed size for Wasm code sections to 11MB.
    Review: The description matches the code changes.

  • 20b0caf9e
    Summary: Add a metric tracking Wasm code section sizes
    Notes: Introduce a code_section_size metric, logging the size of each compiled Wasm canister’s code section.
    Review: The description matches the code changes.

  • 396b461cd
    Summary: Add size limits as fields to the stream builder.
    Notes: Introduce adjustable stream message and size limits to StreamBuilderImpl, enabling smaller, test-specific values for faster limit testing, distinct from mainnet settings.
    Review: The description matches the code changes.

Bugfixes:

  • 4eec0b4b3
    Summary: Don’t panic in make_registry_cup.
    Notes: Modify make_registry_cup to replace hard failures (expect calls) with warnings and graceful None returns, enhancing robustness.
    Review: The description matches the code changes.

  • 20b675c6e
    Summary: Don’t panic in get_dkg_summary_from_cup_contents.
    Notes: Refactor get_dkg_summary_from_cup_contents to handle errors gracefully by returning Err(String) for logging instead of causing program termination via expect() or panics.
    Review: The description matches the code changes.

  • 9d6eea446
    Summary: Use correct registry version to validate dealings inside of block payloads
    Notes: Update the payload validator to verify NiDKG messages using the registry version specific to each message, instead of consistently relying on the latest registry version.
    Review: The description matches the code changes.

  • 0923aa8f3
    Summary: Hook condition should be checked after every mgmt canister call.
    Notes: Ensure the update_on_low_wasm_memory_hook_condition check runs after each management canister call by relocating it within finish_subnet_message_execution.
    Review: The description matches the code changes.

  • a286970c5
    Summary: bump cloudflare-rs crate.
    Notes: Update the cloudflare-rs dependency to a more recent commit in its Git repository.
    Review: The description matches the code changes.

Chores:

  • 7147f471c
    Summary: Allow any order of change actions in purging_non_finalized_blocks_test.
    Notes: Enhance consensus purger test reliability by using a set for remove_from_validated_changeset, eliminating dependencies on element order.
    Review: The description matches the code changes.

  • 43add58cb
    Summary: add some unit tests and a metric for how long it takes to fetch NNS delegations + how big they are.
    Notes: Introduce nns_delegation_manager_update_duration and nns_delegation_manager_delegation_size metrics, along with unit tests, to monitor NNS delegation retrieval performance and size.
    Review: The description matches the code changes.

  • 9ef5605e1
    Summary: Inline make_genesis_summary test function.
    Notes: Remove unused make_genesis_summary function and updates tests to utilize get_dkg_summary_from_cup_contents instead.
    Review: The description matches the code changes.

  • d054caa61
    Summary: Update version of ic-ed25519 to 0.2.
    Notes: Upgrade ic-ed25519 crate to version 0.2.0 and prepare it for publication on crates.io.
    Review: The description matches the code changes.

  • 882e7af8e
    Summary: Move getrandom wasm32-unknown-unknown workaround to packages
    Notes: Rename ic-crypto-getrandom-for-wasm to ic-dummy-getrandom-for-wasm to clarify that it’s a placeholder, used only for build compatibility with the getrandom crate in Wasm.
    Review: The description matches the code changes.

  • 2fd87b60a
    Summary: Change key derivation used in VetKD to BLS12-381 hash_to_scalar.
    Notes: Replaces SHAKE with RFC 9380’s hash_to_field for VetKey derivation, simplifying the cryptographic primitives and streamlining the system.
    Review: The description matches the code changes.

  • f577fe349
    Summary: Upgrade Wasm crates to wasmtime 29.
    Notes: Upgrade Wasm-related libraries (wasm-encoder, wasm-smith, wasmparser, etc.) to newer versions.
    Review: The description matches the code changes.

  • 59abceebc
    Summary: Update some comments.
    Notes: Clarify some comments.
    Review: The description matches the code changes.

  • 810eeb14c
    Summary: use cdk::api::in_replicated_execution.
    Notes: Replace checks for missing data certificates with ic_cdk::api::in_replicated_execution() for clearer intent, directly indicating if the code is running in a replicated environment.
    Review: The description matches the code changes.

  • 6612119c3
    Summary: Bump ic_cdk version.
    Notes: Upgrade the ic-cdk and ic-cdk-macros crates from version 0.16.0 to version 0.17.1.
    Review: The description matches the code changes.

  • 4d9768af1
    Summary: Update debug assertions of Tip thread; flush PageMaps in make_unvalidated_checkpoint.
    Notes: Update checkpointing by ensuring page maps are flushed to disk before checkpoint creation and enhance TipState with more data and validation checks.
    Review: The description matches the code changes.

  • 711b78eb0
    Summary: bump ic-http-gateway lib.
    Notes: Upgrade the ic-http-gateway package from 0.1.0 to version 0.2.0 and associated dependencies.
    Review: The description matches the code changes.

  • 4e132abd8
    Summary: Simplify versioning.
    Notes: Simplify release artifact versioning by directly using the Git commit ID and timestamp, eliminating more complex stamping methods.
    Review: The description matches the code changes.

  • 483f05324
    Summary: Processes robust against restarts.
    Notes: Add automatic restart functionality with a 10-second delay to key IC services, ensuring they recover from failures.
    Review: The description matches the code changes.

  • 1e014f09f
    Summary: Update Base Image Refs [2025-02-13-0813].
    Notes: Update the base image references used for IC OS.
    Review: The description matches the code changes.

Refactoring:

  • 069dc97d0
    Summary: Extract common functionality of verifying NiDKG dealings.
    Notes: Introduce crypto_validate_dealing to eliminate duplicate logic in validate_dealings_for_dealer and validate_dealings_payload.
    Review: The description matches the code changes.

  • 7d99df628
    Summary: Remove install_code from production code and move it to the tests that use it.
    Notes: Eliminate install_code from CanisterManager (test-only) and use install_code_dts in the tests instead, aligning test behaviour with production usage.
    Review: The description matches the code changes.

  • 075a36404
    Summary: Use two instances of the query service for queries and https outcall transform functions.
    Notes: Improve scalability by separating HTTP query handling into two dedicated instances, one for regular queries and another for HTTP outcall transforms, eliminating resource contention.
    Review: The description matches the code changes.

  • b368e3de3
    Summary: Take cycles from call context when a refund is to be returned.
    Notes: Simplify cycle refund handling by consistently setting available cycles to zero post-refund, eliminating special cases and ensuring available_cycles accuracy.
    Review: The description matches the code changes.

  • 4627f3307
    Summary: Move log_dirty_pages to the module where it’s used.
    Notes: Refactor the execution environment package by relocating the log_dirty_pages function for better code organization.
    Review: The description matches the code changes.

  • 57464b9ab
    Summary: Simplify logic to get a CallOrigin from a Query.
    Notes: Steamlime call_origin calculation by directly converting the query source, replacing a complex match statement with a simpler query.source().into() operation.
    Review: The description matches the code changes.

  • 9747838c6
    Summary: Rename reached to instructions_reached.
    Notes: Rename RoundLimits::reached to instructions_reached to clearly indicate that the limit refers to instruction counts.
    Review: The description matches the code changes.

  • 125db7f4f
    Summary: Check wasm execution output only in sandbox.
    Notes: Consolidate canister log appending and version bumping into SystemStateModifications::apply_changes, streamlining the process by removing redundant handling in other areas.
    Review: The description matches the code changes.

  • cba557d53
    Summary: check-hardware.sh.
    Notes: Add comments and code improvement in check-hardware.sh.
    Review: The description matches the code changes.

Tests:

  • edcb5ab41
    Summary: vetKD payload builder/verifier unit tests.
    Notes: Add new unit tests for the VetKD functionality.
    Review: The description matches the code changes.

Proposal 135422

Summary

  1. Vote: Adopt
  2. Hash: Hashes match
  3. Reasons to adopt: Builds fine + hashes match + release notes match the commits.

Commits

Other changes:

  • 2f02a660f
    Summary: Revert "feat(MR): Roll out best-effort calls to the first few subnets.
    Notes: Revert commit df5828f.
    Review: The description matches the code changes.
1 Like

Proposal 135421 | Tim - CodeGov

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. I’ve reviewed commits for Consensus, Crypto and Interface as detailed below.

Review

Features:

[49d6101af]
Adds code to call crypto.combine_encrypted_key_shares and crypto.verify_encrypted_key endpoints. Adds related metrics and associated code.

[7dda5ff7f]
Various changes to subnet recovery logic and tests, matching description.

[3deb76dff]
Changes to block caching in the bitcoin adapter, such that blocks are now stored in serialised form.

[396b461cd]
Adds new constants TARGET_STREAM_SIZE_BYTES and MAX_STREAM_MESSAGES within message_routing.rs , set to 10MB and 10000 respectively, so as to limit the queuing of messages into an outgoing stream accordingly.

Bugfixes:

[4eec0b4b3]
Changes error handling in make_registry_cup_from_cup_contents and make_registry_cup_from_cup_contents so that instead of panicking it will issue a warning and return None.

[20b675c6e]
Changes error handling in get_dkg_summary_from_cup_contents so that instead of panicking it will return an error.

[9d6eea446]
Changes signature verification in validate_dealings_payload to use config.registry_version() instead of last_summary.registry_version so as to use the correct registry version as explained in the commit notes.

Chores:

[7147f471c]
Changes purging_non_finalized_blocks_test to use HashSet::from instead of vec! for change actions so that the order of change actions does not affect the test.

[43add58cb]
As described, adds unit tests and metrics for how long it takes to fetch NNS delegations and their size.

[9ef5605e1]
Removes make_genesis_summary to use already existing get_dkg_summary_from_cup_contents function instead.

[d054caa61]
Updates ic-ed25519 to version 0.2.0.

[882e7af8e]
Moves getrandom_for_wasm from rs/crypto to packages and renames it to ic-dummy-getrandom-for-wasm.

[2fd87b60a]
Adds method Scalar::hash, now to be used instead of Shake256 for VetKD key derivation.

[59abceebc]
Updates comments within rs/ledger_suite/common/ledger_core/src/balances.rs to clarify maximum values for tokens.

[810eeb14c]
Uses in_replicated_execution() instead of data_certificate().is_none() in token-related http requests.

[6612119c3]
Version changes for ic-cdk and related crates.

[4d9768af1]
Moves PageMapType enum and strip_page_map_deltas and flush_canister_snapshots_and_page_maps functions from rs/state_manager/src/lib.rs to rs/state_manager/src/checkpoint.rs. Removes flush_canister_snapshots_and_page_maps method from StateManagerImpl. Removes DirtyPageMap type. Further changes as per the commit notes.

Refactoring:

[069dc97d0]
Adds function crypto_validate_dealing to replace functionality in a few other parts of the consensus/dkg code.

Tests:

[edcb5ab41]
Adds several tests related to the VetKD payload builder.

Proposal 135422 | Tim - CodeGov

Vote: Adopt

Reason: Build is successful and hashes match. The proposal consists of a single commit which reverts the roll out of best-effort calls to the first few subnets from commit df5828f, as reviewed previously.

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

1 Like

Proposal 135421 - Ipsita | ZenithCode

Summary

  1. Vote: Adopt
  2. Hash: All the hashes match
  3. Reason to Adopt The release notes match the commits and the code changes. Builds successfully.

Features

  • 49d6101af
    Summary: Call crypto in vetKD payload builder
    Notes: Adds missing crypto calls to create and validate combines vetKD key shares.
    Review: Code changes match the commit message.

  • 7dda5ff7f
    Summary: Don’t use rsync to copy the state during recoveries
    Notes: Uses cp command instead of rsync to copy the state during recoveries
    Review: Code changes match the commit message.

  • 3deb76dff
    Summary: Bitcoin serialize blocks first
    Notes: Blocks are now serialized during storing them instead of serializing them we requesting them. This makes request calls lighter and improves time efficiency.
    Review: Code changes match the commit message.

  • 5d0fcce40
    Summary: Bump allowed code section size
    Notes: Increases MAX_CODE_SECTION_SIZE_IN_BYTES from 10mb to 11mb
    Review: Code changes match the commit message.

  • 20b0caf9e
    Summary: Add a metric tracking Wasm code section sizes
    Notes: Adds a metric to track how often users get close to the limit on wasm code.
    Review: Code changes match the commit message.

  • 396b461cd
    Summary: Add size limits as fields to the stream builder
    Notes: Adds size limits to streams so that smaller streams are possible since it can take up a long time fill entire streams.
    Review: Code changes match the commit message.

Bugfixes

  • 4eec0b4b3
    Summary: Don’t panic in make_registry_cup
    Notes: Orchestrator calls the code in the PR to create registry cpu’s so it should not panic.
    Review: Code changes match the commit message.

  • 20b675c6e
    Summary: Don’t panic in get_dkg_summary_from_cup_contents
    Notes: Orchestrator calls this code every ~10 seconds to make the latest registry. The the NiDKG summary is not created we should return the error instead of panicking.
    Review: Code changes match the commit message.

  • 9d6eea446
    Summary: Use correct registry version to validate dealings inside of block payloads
    Notes: Uses the same registry version when validating NiDKG, regardless of if they come from consensus block pool or the DKG pool.
    Review: Code changes match the commit message.

  • 0923aa8f3
    Summary: Hook condition should be checked after every mgmt canister call
    Notes: Ensures that the condition for low wasm memory hook will be met after every management canister call.
    Review: Code changes match the commit message.

  • a286970c5
    Summary: bump cloudflare-rs crate
    Notes: Updates cloudflare-rs crate version.
    Review: Code changes match the commit message.

Chores

  • 7147f471c
    Summary: Allow any order of change actions in purging_non_finalized_blocks_test
    Notes: This test was needed to be updated whenever payload struct changed lexicographic order of block hashes.With this new PR it allows for any lexicographic order to be validated with this test case.
    Review: Code changes match the commit message.

  • 43add58cb
    Summary: add some unit tests and a metric for how long it takes to fetch NNS delegations + how big they are
    Notes: Adds some unit test cases and metric for how long NNS calls take.
    Review: Code changes match the commit message.

  • 9ef5605e1
    Summary: Inline make_genesis_summary test function
    Notes: Removes the retry logic since it is not required, and inlines the remaining functionality.
    Review: Code changes match the commit message.

  • d054caa61
    Summary: Update version of ic-ed25519 to 0.2
    Notes: updates version of ic-ed25519 from 0.1.0 to 0.2.0.
    Review: Code changes match the commit message.

  • 882e7af8e
    Summary: Move getrandom wasm32-unknown-unknown workaround to packages
    Notes: This PR allows to publish it to crates.io for use by canister developers.
    Review: Code changes match the commit message.

  • 2fd87b60a
    Summary: Change key derivation used in VetKD to BLS12-381 hash_to_scalar
    Notes: Switches to using hash_to_scalar instead of SHAKE for vetKD prototype.
    Review: Code changes match the commit message.

  • f577fe349
    Summary: Upgrade Wasm crates to wasmtime 29
    Notes: Updates various wasm crates.
    Review: Code changes match the commit message.

  • 59abceebc
    Summary: Update some comments
    Notes: Just some comments are updated.
    Review: Code changes match the commit message.

  • 810eeb14c
    Summary: use cdk::api::in_replicated_execution
    Notes: Switches to using the new in_replicated_execution method to check if canister is running in replicated or query mode.
    Review: Code changes match the commit message.

  • 6612119c3
    Summary: Bump ic_cdk version
    Notes: updates various ic_cdk versions.
    Review: Code changes match the commit message.

  • 4d9768af1
    Summary: Update debug assertions of Tip thread; flush PageMaps in make_unvalidated_checkpoint
    Notes: Adds debug assertion to validate the data in TipState
    Review: Code changes match the commit message.

  • 711b78eb0
    Summary: bump ic-http-gateway lib
    Notes: Upgrades ic-http-gateway library
    Review: Code changes match the commit message.

  • 4e132abd8
    Summary: Simplify versioning
    Notes: Simplifies code logic to stamp released artifacts.
    Review: Code changes match the commit message.

  • 483f05324
    Summary: Processes robust against restarts
    Notes: Ensures that all critical services restarts on failure.
    Review: Code changes match the commit message.

  • 1e014f09f
    Summary: Update Base Image Refs [2025-02-13-0813]
    Notes: Updates base ic os image references.
    Review: Code changes match the commit message.

Refactoring

  • 069dc97d0
    Summary: Extract common functionality of verifying NiDKG dealings
    Notes: Extract common functionalities of verifying NiDKG dealings to make sure that logic remains consistent.
    Review: Code changes match the commit message.

  • 7d99df628
    Summary: Remove install_code from production code and move it to the tests that use it
    Notes: Removes install_code from production and moves it to test cases.
    Review: Code changes match the commit message.

  • 075a36404
    Summary: Use two instances of the query service for queries and https outcall transform functions
    Notes: Uses two instance of QueryService so that we get code reusability and isolation between both the queries.
    Review: Code changes match the commit message.

  • b368e3de3
    Summary: Take cycles from call context when a refund is to be returned
    Notes: Whenever refund needs to be computed when processing the result of a canister execution. The available cycles in the call context are emptied. This is important
    to maintain spec compliance and stop accepting cycles after the call
    has been replied.
    Review: Code changes match the commit message.

  • 4627f3307
    Summary: Move log_dirty_pages to the module where it’s used
    Notes: Code refactoring to move log_dirty_pages method to where it is used.
    Review: Code changes match the commit message.

  • 57464b9ab
    Summary: Simplify logic to get a CallOrigin from a Query
    Notes: Refactors code to get call origin from a query.
    Review: Code changes match the commit message.

  • 9747838c6
    Summary: Rename reached to instructions_reached
    Notes: Renames function from round_limits.reached() to round_limits.instructions_reached.
    Review: Code changes match the commit message.

  • 125db7f4f
    Summary: Check wasm execution output only in sandbox
    Notes: Code to check wasm execution is spread out to multiple places. This PR moves all the logic to one single place.
    Review: Code changes match the commit message.

  • cba557d53
    Summary: check-hardware.sh
    Notes: Refactors code in check-hardware.sh.
    Review: Code changes match the commit message.

Tests

  • edcb5ab41
    Summary: CON-1422 vetKD payload builder/verifier unit tests
    Notes: Adds unit tests for the new vetKD payload builder.
    Review: Code changes match the commit message.

Proposal 135422 - Ipsita | ZenithCode

Summary

  1. Vote: Adopt
  2. Hash: All the hashes match
  3. Reason to Adopt The release notes match the commits and the code changes. Builds successfully.

Other changes

  • 2f02a660f
    Summary: Revert "feat(MR): Roll out best-effort calls to the first few subnets
    Notes: Reverts commit df5828f
    Review: Code changes match the commit message.
1 Like

Proposal #135421 — Zack | CodeGov

for release-2025-02-20_10-16-base.

Vote: Adopted.
Reason: Builds fine and the hash matches for GUESTOS, HOSTOS and SETUPOS.

Commits

Features:
7dda5ff7f Consensus,Interface:
Defines the CopyLocalIcStateStep struct and implements the Step trait for it.
The CopyLocalIcStateStep Struct excludes CHECKPOINTS from rsync, it copies node state from IC_DATA_PATH to working_dir (excluding unwanted files), then copies configuration (IC_JSON5_PATH) to working_dir. Determines the most recent checkpoint in IC_CHECKPOINTS_PATH. Creates a recovery checkpoint directory and copies the latest checkpoint into it using cp -R.
We also have the check for selecting between local and remote recovery based on the cfg.local_recovery flag.
5d0fcce40 Execution,Interface:
Increased a bit the allowed code section size for canister Wasm by adding 1 MB to MAX_CODE_SECTION_SIZE_IN_BYTES for 11 total.
20b0caf9e Execution,Interface:
Adds code_section_size to track size of wasm module’s code section at each compilation.

Bugfixes:
4eec0b4b3 Consensus,Interface:
The make_registry_cup_from_cup_contents now logs a warning using warn! and returns None instead of panicing.
20b675c6e Consensus,Interface: Don’t panic in get_dkg_summary_from_cup_contents (#3974)
The get_dkg_summary_from_cup_contents if the operation succeeds (Ok(summary)), it extracts and returns summary and now instead of panicing if there’s an error (Err(err)), it logs a warning using warn! and then returns None.
9d6eea446 Consensus,Interface:
Uses the correct registry version of the dealing’s config to validate dealings inside of block payloads.
0923aa8f3 Execution,Interface:
Now in the finish_subnet_message_execution if canister_id exists (Some(canister_id)), it tries to mutably access the state of the canister (state.canister_state_mut(canister_id)).
If the canister exists in the state, it calls update_on_low_wasm_memory_hook_condition().
a286970c5 Owners:
Bumps the cloudflare-rs crate revision.

Refactoring:
cba557d53 Node:
Refactoring the hardware check script by commenting differents sections of it for clarity in the check-hardware.sh like for example the dual cpu socket check is now enforced.

Tests:
edcb5ab41 Consensus,Interface:
Added unit tests for the new vetKD payload builder.

Proposal #135422 — Zack | CodeGov

for release-2025-02-20_10-16-disable-best-effort-messaging.

Vote: Adopted.
Reason: Builds fine and the hash matches for GUESTOS, HOSTOS and SETUPOS.

Other changes:
2f02a660f Consensus,Execution,Interface: Revert "feat(MR): Roll out best-effort calls to the first few subnets.
Matches description.

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 135421 – Zane | CodeGov

Vote: ADOPT
Reason: Build completes successfully, both hashes and reviewed commits match their descriptions, so I’ve decided voted to adopt.

Features:

5d0fcce40 Increased MAX_CODE_SECTION_SIZE_IN_BYTES from 10 to 11 MiB. Updated large_code_section_rejected test and hypervisor_code_section_size field of hypervisor metrics accordingly.

20b0caf9e Modified CompilationResult and WasmValidationDetails structs to include a field which holds wasm code section byte size. Added code_section_size to HypervisorMetrics to keep track of this value everytime observe_compilation_metrics is called.

396b461cd Modified BatchProcessorImpl, MessageRoutingImpl, SyncMessageRouting and StreamBuilderImpl constructors so that max_stream_messages and target_stream_size_bytes values can be passed to them and finally be stored in StreamBuilderImpl struct, which now has 2 additional fields with the same name. This change allows to dynamically define the message count limit when a new stream builder instance is created instead of having the values hardcoded, making it possible to decouple values used for tests from the one used on main net. Finally the constants used have been made public and moved to the message routing config to avoid duplication.

Bugfixes:

0923aa8f3 Moved low_wasm_memory hook check from do_update_settings to finish_subnet_message_execution so that it runs after every call to the management canister. Extended ExecuteSubnetMessageResult enum so when a message finishes processing correctly, the canister id for which the call was requested is returned alongside the response. This id is then used in finish_subnet_message_execution to know for which canister the hook has to be checked.

a286970c5 Bumped cloudflare-rs crate git revision.

Chores:

f577fe349 Same as description.

59abceebc Same as description.

810eeb14c Replaced usage of data_certificate().is_none to check execution mode with in_replicated_execution api.

6612119c3 Bumped ic_cdk from 0.16.0 to 0.17.1, ic-cdk-macros from 0.9.0 to 0.17.1 and evm_rpc_types to 1.3. Also updated candid definition of `LogVisibility for cketh/ckbtc minter and evm rpc canisters to include allowed_viewers variant.

4d9768af1 Modified make_unvalidated_checkpoint method to flush all the canister heap deltas to disk and strip deltas from page maps. Moved PageMapType struct alongside its implementation from state_manager/src/lib.rs to state_manager/src/checkpoint.rs and deleted DirtyPageMap. Refactored TipState to be a struct which holds state of both latest checkpoint and current tip, this data is updated on each tip request and is used to add new debug asserts in the tip thread. Overall the changes look good and match the commit’s description, though they are more extensive than what one would initially think based solely on it. For instance the page_map_flushes metric has been removed too and the tip thread no longer accepts no-op requests, which were sent immediately after FlushPageMapDelta.

711b78eb0 Bumped ic-http-gateway to from 0.1.0 to 0.2.0 and a bunch of related packages from 3.0.2 to 3.0.3.

483f05324 Updated systemd service unit files for critical components so that they are restarted automatically after 10 seconds in case of failures.

1e014f09f Updated ICOS image refs.

Refactoring:

7d99df628 Deleted production implementation of install_code method from canister manage and moved its logic to the install_code in the canister manager tests.

075a36404 Added https_outcalls_service field to ExecutionServices and initialize it with a separate instance of the QueryExecutionService, so that one is reserved for actual queries and one for https outcalls.

b368e3de3 Modified on_canister_result so that available cycles are always set to 0 by calling take_available_cycles when a refund is issued and deleted special case from ic0_msg_cycles_accept_helper which has been made redundant by the aforementioned change, as the amount of cycles available in the call context is already correct.

4627f3307 Moved log_dirty_pages from execution_environment.rs to common.rs module and updated imports to reflect this change.

57464b9ab In run method of QueryContext use Query’s source function to construct CallOrigin rather than doing it explicitly using a match statement.

9747838c6 Renamed reached method to instructions_reached and updated all its references.

125db7f4f Consolidate system state changes, such as logging canister traps and canister_version increments, to take place in apply_changes instead of having them spread around all over the codebase. Moved logic to determine whether to add logs for canister traps in add_canister_log_for_trap. In take_system_state_modifications handle explicitly which modifications should happen for each ApiType, i.e which require version increment and logs for traps.

Proposal 135422 – Zane | CodeGov

Vote: ADOPT
Reason: Build completes successfully and hashes match. Proposed changes are the same as 135421 but with commit df5828f reverted in case the subnets where the new message model is enabled start experiencing issues.

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