Proposal to elect new release rc--2025-02-06_12-26

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 5ee8dcf34f26c12defcff51c2f5737214611bccc submitted with ID 135203](https://dashboard.internetcomputer.org/proposal/Proposal for version 5ee8dcf34f26c12defcff51c2f5737214611bccc submitted with ID 135203).

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

Release Notes for release-2025-02-06_12-26-base (5ee8dcf34f26c12defcff51c2f5737214611bccc)

This release is based on changes since release-2025-01-30_03-03-base (35f39480fe28485694743dc3ef15ac37ea000c74).

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:

  • baee73359 Consensus,Interface: re-enable hashes-in-blocks feature on all subnets (#3562)
  • a97325591 Crypto,Interface(crypto): make some conversions to KeyId infallible (#3718)
  • 8ac49d3dc Crypto,Interface: Add VetKdProtocol to Crypto trait (#3726)
  • 15a51647e Crypto,Interface(crypto): implement VetKdProtocol trait for CryptoComponent (#3565)
  • b7a0b3d3b Execution,Interface: Implement DTS for replicated queries (#3557)
  • f0058db9a Execution,Interface: Support for ic0.subnet_self() (#3637)
  • d343919be Interface(sns-cli): Cleanup store canister after upgrading an SNS-controlled canister (#3738)
  • 9fcffc7fc Interface: enable testnet4 support in the bitcoin adapter (#3267)
  • 728875118 Node(metrics-proxy): add rules for mr_blocks_proposed_total and mr_blocks_not_proposed_total (#3750)

Bugfixes:

  • 90a1b566e Consensus,Interface: move metrics to all messages (#3690)
  • fbe09a672 Consensus,Interface: increase the number of bitcoin in flight requests to 1000. (#3768)
  • 2608017f2 Consensus,Interface: reduce the bitcoin adapter maximum response size to 1MB for testnet4 (#3769)
  • 22eda91d6 Consensus,Interface: don’t clone blocks during get_successors (#3687)
  • eb4a6d5a8 Consensus,Interface: introduce backpressure from consensus to the networking layer by using bounded channels (#2340)
  • 5ee8dcf34 Execution,Interface: revert Run hook after CanisterWasmMemoryLimitExceeded error is fixed (#3850)
  • 152a69a39 Execution,Interface: Use pages for tracking changes (#3776)
  • 773b035f2 Execution,Interface: Run hook after CanisterWasmMemoryLimitExceeded error is fixed (#3631)
  • ef595725a Execution,Interface: Update hook status after update of canister settings (#3624)
  • 5703c4382 Owners(custom domains): bump cloudflare-rs due to CF API changes (#3744)

Performance improvements:

  • 1f525daa8 Execution,Interface,Message Routing(MR): Look up SubnetIds from a BTreeSet instead of from a Vec (#3779)

Chores:

  • 3868259d1 Consensus,Interface: improve return types use by the assembler (#2215)
  • a9c6652c4 Execution,Interface,Message Routing: Fix some typos in MR code (#3719)
  • 8a5bdfd43 Interface(crypto): Move ed25519 crate to packages (#3770)
  • 3fd26f17a Interface,Message Routing: Remove old storage logic (#3708)
  • 192b37ddd Node: Update Base Image Refs [2025-01-30-0807] (#3680)

Refactoring:

  • 54b7f0e7f Execution,Interface: Add memory usage checks when loading a snapshot for consistency (#3789)
  • cde707113 Execution,Interface: Consolidate how system state modifications are extracted from the System API (#3706)

Tests:

  • 61639eaa4 Crypto,Interface(crypto): add smoke test for VetKdProtocol impl (#3649)
  • 0206830a6 Interface(btc): Port ckBTC tests from legacy ECDSA to chain key Registry API (#3820)
  • 340f17da6 Interface(sns-cli): Port UpgradeSnsControlledCanister with Large Wasm integration test to use SNS CLI with PocketIc (#3696)

Documentation:

  • 4f0fa4671 Execution,Interface: Compilation cache file ownership (#3667)

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/5ee8dcf34f26c12defcff51c2f5737214611bccc/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c 5ee8dcf34f26c12defcff51c2f5737214611bccc --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 14c8f44cd6f7cf3112f37a082537deba95f32e3f submitted with ID 135204](https://dashboard.internetcomputer.org/proposal/Proposal for version 14c8f44cd6f7cf3112f37a082537deba95f32e3f submitted with ID 135204).

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

Release Notes for release-2025-02-06_12-26-revert-hashes-in-blocks (14c8f44cd6f7cf3112f37a082537deba95f32e3f)

This release is based on changes since release-2025-02-06_12-26-base (5ee8dcf34f26c12defcff51c2f5737214611bccc).

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.

This release diverges from the latest release. Merge base is 0206830a658fc51c35d9ccb005e86a22adf3b5be. Changes were removed from this release.

Other changes:

  • 37c059a6e Consensus,Interface: Revert “feat: re-enable hashes-in-blocks feature on all subnets (#3562)”
    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/14c8f44cd6f7cf3112f37a082537deba95f32e3f/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c 14c8f44cd6f7cf3112f37a082537deba95f32e3f --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.

2 Likes

Proposal 135203 - 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:

  • baee73359 Consensus,Interface: re-enable hashes-in-blocks feature on all subnets (#3562)
    Review: Looks fine + matches description
    Notes: Sets the HASHES_IN_BLOCKS_FEATURE_ENABLED flag back to true now that the feature has been running successfully in production for a while.

  • a97325591 Crypto,Interface(crypto): make some conversions to KeyId infallible (#3718)
    Review: Looks fine + matches description
    Notes: Removes a load of error handling by replacing some TryFrom implementations with infallible From versions, since the only case where the conversions would fail is if the number of bytes exceeds 2^64, which realistically will never happen.

  • 8ac49d3dc Crypto,Interface: Add VetKdProtocol to Crypto trait (#3726)
    Review: Looks fine + matches description
    Notes: Adds VetKdProtocol to the Crypto supertrait so that it can be used in the existing crypto libraries.

  • 15a51647e Crypto,Interface(crypto): implement VetKdProtocol trait for CryptoComponent (#3565)
    Review: Looks fine + matches description
    Notes: Splits VetKdEncryptedKeyShareCreationVaultError::InvalidArgument into more granular error variants + implements creating and combining VetKd key shares within CryptoComponentImpl.

  • b7a0b3d3b Execution,Interface: Implement DTS for replicated queries (#3557)
    Review: Looks fine + matches description
    Notes: Consolidates the handling of update calls and replicated query calls within the execution environment into a single call_or_task file, then enables DTS for replicated queries by sharing the existing logic for update calls.

  • f0058db9a Execution,Interface: Support for ic0.subnet_self() (#3637)
    Review: Looks fine + matches description
    Notes: Adds the subnet_self_size and subnet_self_copy ic0 functions, allowing canisters to determine which subnet they are on.

  • d343919be Interface(sns-cli): Cleanup store canister after upgrading an SNS-controlled canister (#3738)
    Review: Looks fine + matches description
    Notes: Wires up the ability to refund back the cycles after upgrading an SNS canister via a store canister, the actual refund implementation is currently missing, so for now that part is skipped and the store canister is simply deleted.

  • 9fcffc7fc Interface: enable testnet4 support in the bitcoin adapter (#3267)
    Review: Looks fine + matches description
    Notes: Makes a few small adjustments to the Bitcoin adapter, enabling it to support the Bitcoin testnet4 which is more stable than the currently supported testnets.

  • 728875118 Node(metrics-proxy): add rules for mr_blocks_proposed_total and mr_blocks_not_proposed_total (#3750)
    Review: Looks fine + matches description
    Notes: Updates the GuestOS metrics filters to keep the mr_blocks_proposed_total and mr_blocks_not_proposed_total metrics.

Bugfixes:

  • 90a1b566e Consensus,Interface: move metrics to all messages (#3690)
    Review: Looks fine + matches description
    Notes: Increments the bitcoin_messages_sent metrics any time a message is sent rather than only when certain types are sent.

  • fbe09a672 Consensus,Interface: increase the number of bitcoin in flight requests to 1000. (#3768)
    Review: Looks fine + matches description
    Notes: Splits the MAX_IN_FLIGHT_BLOCKS constant into a value for mainnet and a larger value (1000) for testnet4, this ensures testnet4 can always make progress since sometimes there would be more than 100 forked blocks.

  • 2608017f2 Consensus,Interface: reduce the bitcoin adapter maximum response size to 1MB for testnet4 (#3769)
    Review: Looks fine + matches description
    Notes: Reduces the max response size from the Bitcoin adapter to 1MB when targeting testnet4, this avoids issues where blocks could take too long to serialize.

  • 22eda91d6 Consensus,Interface: don’t clone blocks during get_successors (#3687)
    Review: Looks fine + matches description
    Notes: Passes round Arc references to blocks in the Bitcoin adapter to avoid having to clone them.

  • eb4a6d5a8 Consensus,Interface: introduce backpressure from consensus to the networking layer by using bounded channels (#2340)
    Review: Looks fine + matches description
    Notes: Introduces backpressure by using bounded channels when passing artifacts from the consensus manager to the artifact manager, this way, if the channels get full, requests to push new events have to wait until the channel has space available.

  • 5ee8dcf34 Execution,Interface: revert Run hook after CanisterWasmMemoryLimitExceeded error is fixed (#3850)
    Review: Looks fine + matches description
    Notes: Reverts 773b035f2.

  • 152a69a39 Execution,Interface: Use pages for tracking changes (#3776)
    Review: Looks fine + matches description
    Notes: Fixes a bug where the number of bytes was being passed to PageMap::grow rather than the number of pages.

  • 773b035f2 Execution,Interface: Run hook after CanisterWasmMemoryLimitExceeded error is fixed (#3631)
    Review: Looks fine + matches description
    Notes: Reverted by 5ee8dcf34, so this commit can be ignored.

  • ef595725a Execution,Interface: Update hook status after update of canister settings (#3624)
    Review: Looks fine + matches description
    Notes: Updates the “on low wasm memory” hook status after updating canister settings or installing a canister.

  • 5703c4382 Owners(custom domains): bump cloudflare-rs due to CF API changes (#3744)
    Review: Looks fine + matches description
    Notes: Updates the cloudflare-rs git dependency to a later commit.

Performance improvements:

  • 1f525daa8 Execution,Interface,Message Routing(MR): Look up SubnetIds from a BTreeSet instead of from a Vec (#3779)
    Review: Looks fine + matches description
    Notes: Small performance boost by storing subnet Ids in a BTreeSet rather than a Vec since this collection is only ever used to check if it contains a given subnet.

Chores:

  • 3868259d1 Consensus,Interface: improve return types use by the assembler (#2215)
    Review: Looks fine + matches description
    Notes: Tidies up the response types from the assembler by introducing the generic AssembleResult, rather than returning Result values.

  • a9c6652c4 Execution,Interface,Message Routing: Fix some typos in MR code (#3719)
    Review: Looks fine + matches description
    Notes: Fixes a few minor typos.

  • 8a5bdfd43 Interface(crypto): Move ed25519 crate to packages (#3770)
    Review: Looks fine + matches description
    Notes: Moves ic-crypto-ed25519 to packages/ic-ed25519 and prepares it for publishing to crates.io.

  • 3fd26f17a Interface,Message Routing: Remove old storage logic (#3708)
    Review: Looks fine + matches description
    Notes: Removes the lsmt_status flag since it is now enabled everywhere, then deletes all the code for the old storage implementation that was only reached when the flag was set to disabled.

  • 192b37ddd Node: Update Base Image Refs [2025-01-30-0807] (#3680)
    Review: Looks fine + matches description
    Notes: Updates the base IC-OS image references.

Refactoring:

  • 54b7f0e7f Execution,Interface: Add memory usage checks when loading a snapshot for consistency (#3789)
    Review: Looks fine + matches description
    Notes: Moves the logic to check subnet memory out of take_canister_snapshot and into its own function, then reuses these checks after loading a canister snapshot.

  • cde707113 Execution,Interface: Consolidate how system state modifications are extracted from the System API (#3706)
    Review: Looks fine + matches description
    Notes: Merges the logic of two very similar functions (into_system_state_modifications and take_system_state_modifications) together so that only a single function is required.

Tests:

  • 61639eaa4 Crypto,Interface(crypto): add smoke test for VetKdProtocol impl (#3649)
    Review: Looks fine + matches description
    Notes: Adds tests covering the new VetKd implementation in the CryptoComponent.

  • 0206830a6 Interface(btc): Port ckBTC tests from legacy ECDSA to chain key Registry API (#3820)
    Review: Looks fine + matches description
    Notes: Removes the deprecated ecdsa_config from the Registry and switches ckBTC tests to use the new chain_key_config in its place.

  • 340f17da6 Interface(sns-cli): Port UpgradeSnsControlledCanister with Large Wasm integration test to use SNS CLI with PocketIc (#3696)
    Review: Looks fine + matches description
    Notes: Refactors and renames a lot of code within PocketIC and adds a few helper functions for setting up NNS canisterIds, then switches the upgrade_sns_controlled_canister_with_large_wasm.rs test to call into sns_cli::upgrade_sns_controlled_canister rather than calling into sns::governance.

Documentation:

  • 4f0fa4671 Execution,Interface: Compilation cache file ownership (#3667)
    Review: Looks fine + matches description
    Notes: Updates some doc comments and some error messages.

Proposal 135204

Vote: Adopt
Reason: I have successfully run the build script and there is only a single additional commit which simply disables the HASHES_IN_BLOCKS_FEATURE_ENABLED flag in case an issue is detected in this new feature.

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.

2 Likes

proposal - 135203 – 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:

A few interesting changes are the update key modules so that canisters can directly obtain their own subnet ID during execution. Additionally, new VetKdProtocol methods and dependencies have been added, integrating them with the existing crypto component to enhance the creation, verification, and combination of encrypted key shares. Mostly changes that refactor, clean up, or otherwise improve existing code without adding entirely new functionality.

Commits Summary

baee73359
Reverts the enabled feature HASHES_IN_BLOCKS.

a97325591
The previous implementation used a fallible TryFrom<(AlgorithmId, &B)> for types that could be converted into a KeyId. This has been replaced with an infallible From<(AlgorithmId, &B)> implementation.
Rather than returning a Result, the conversion now directly produces a KeyId.

8ac49d3dc
Added new VetKdProtocol methods and corresponding type imports to support vetkd operations. Implemented the VetKdProtocol trait for TempCryptoComponentGeneric by delegating calls to the underlying crypto component.

15a51647e
New dependency for vetkd support ic-crypto-internal-bls12-381-vetkd across Cargo. Enhanced the vetkd module by updating deserialization functions, error types, and implementing vetkd logic (creation, verification, and combination of encrypted key shares) with improved logging and error handling.

b7a0b3d3b
Added a new dependency on the static_assertions crate in Cargo.lock, BUILD.bazel, and Cargo.toml. Introduced compile-time assertions (using const_assert_eq!) to validate response size constants for both mainnet and Testnet4 configurations.

f0058db9a
Added two new system API functions—subnet_self_size and subnet_self_copy—across wasm validation, the wasmtime embedder, and the system API implementation. Updated sandbox and execution environment modules to expose and utilize the subnet ID retrieval functionality. Enables canisters to retrieve the subnet id directly from within a canister.

d343919be
Introduced new async management canister functions for canister_status, stop_canister, and delete_canister in the nervous system agent module. Added SNS governance logic for fetching proposals and implemented a refund mechanism (with corresponding CLI commands) for SNS-controlled canister upgrades.

9fcffc7fc
Upgraded the version of the syn crate from 2.0.96 to 2.0.98. Modified the Bitcoin adapter configuration and validation logic to support the “testnet4” network, including changes to DNS seeds, port numbers, address limits, checkpoints, and difficulty adjustment tests.

728875118
Adds rules to metrics proxy mr_blocks_proposed_total and mr_blocks_not_proposed_total

90a1b566e
Moves metric to function is used to send a message to a specified connection..

fbe09a672
MAX_IN_FLIGHT_BLOCKS and TESTNET4_MAX_IN_FLIGHT_BLOCKS, to control the number of in-flight block requests, with a higher limit for testnet4. Adjusted the BFS logic in get_next_headers to break out once the number of headers reaches the network-dependent in-flight limit.

2608017f2
Added the static_assertions dependency. Added compile‐time assertions (using const_assert_eq!) to verify that the sum of header and block byte limits equals the expected total response size for both mainnet and Testnet4. Modified the block retrieval logic in the get successors handler to select the appropriate maximum blocks size based on whether the network is Testnet4 or not.

22eda91d6
Changed the block cache in BlockchainState to store blocks as reference-counted pointers (Arc<Block>) instead of owning the blocks directly. Modified related types in the get successors handler to work with Arc<Block> rather than raw Block instances.

eb4a6d5a8
Replaced usage of unbounded channels with bounded channels by switching from tokio::sync::mpsc::unbounded_channel() to tokio::sync::mpsc::channel() across multiple modules. Updated the corresponding stream wrappers from UnboundedReceiverStream to ReceiverStream to match the new bounded channel types.

5ee8dcf34
Removed the conditional logic that attempted to reset and re-enqueue the OnLowWasmMemory hook when a wasm memory limit was exceeded during task execution. Refactored the match statement in execute_call_or_task to treat CanisterCallOrTask::Task(_) differently by effectively bypassing the low memory hook handling for tasks. wasm_memory_limit will move to heartbeat.

152a69a39
Renamed the delta parameter to num_pages in the PageBitmap::grow function for clarity, indicating that the input represents a number of pages rather than a byte delta.
Updated the calls to the bitmap grow functions to use the computed number of pages instead of the delta value.

773b035f2
Made the canister mutable in the update execution function to allow modification when handling low memory errors. Added logic to detect a WasmMemoryLimitExceeded error for tasks of type OnLowWasmMemory and re-enqueue the low memory hook by first removing and then adding it back to the task queue.

ef595725a
After applying canister settings, the manager now explicitly calls update_on_low_wasm_memory_hook_condition() to re-evaluate the low memory hook condition.

5703c4382
Update cloudflare rev.

1f525daa8
Changed the type of the subnet_ids parameter from a slice (&[PrincipalId]) to a &BTreeSet<PrincipalId> in functions related to rejecting subnet messages in canister queues and system state.

3868259d1
Replaced the use of an error type (Aborted) with a new AssembleResult enum that distinguishes between a successful assembly (Done { message, peer_id }) and an unwanted artifact (Unwanted).

a9c6652c4
Fix typos

8a5bdfd43
Changed all references from the old ic-crypto-ed25519 package to the new ic-ed25519 package across multiple files. Updated dependency paths and package names to reflect the new package location and naming convention, and added a CODEOWNERS entry for the new package.

3fd26f17a
Removed the lsmt_status field from the LsmtConfig struct and eliminated its usage throughout state management, checkpointing, and manifest generation.

192b37ddd
Update base image refs.

54b7f0e7f
New helper function, memory_usage_checks, that consolidates memory usage validation, freeze threshold checking, subnet memory capacity verification, and cycle reservation into a single reusable unit.

cde707113
Replaced calls to into_system_state_modifications() with take_system_state_modifications(), requiring mutable access to the system API to extract pending state modifications.

61639eaa4
A new dependency, ic-vetkd-utils, has been added.
In the NI-DKG test environment, the configuration is updated to generate and insert both DKG dealing encryption keys and node signing public keys into the registry, ensuring that vetKD-related key derivation can be performed.

0206830a6
Removed all references to EcdsaConfig from registry, messaging, consensus test framework, and related modules, replacing its functionality with ChainKeyConfig.

340f17da6
Update dependency management and add new libraries for utility functions. Make certain API functions public (e.g., update_call_with_effective_principal). Refine error handling in SNS governance

4f0fa4671
Instead of using File::create(...), the code now uses File::create_new(...) for both the bytes file and the initial state file. The file creation routines now enforce that files do not pre-exist

proposal - 135204 – Cyberowl | CodeGov

Vote: ADOPT

Reason:

One commit to disable HASHES_IN_BLOCKS_FEATURE_ENABLED. The verification build hash also matches release_package_sha256_hex.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: MATCH

About CodeGov…(click to expand)

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these topics and Synapse on most other topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron and KongSwap with a known neuron and credible Followees.

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

1 Like

Proposal 135203 – 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:

  • Implements DTS for replicated queries, adds support for the subnet_self system api
  • Small fixes, improvements and refactors

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

b7a0b3d3b:
Refactors how replicated calls and tasks are executed by merging the execute_update and execute_replicated_query functions into the execute_call_or_task function. Adds the Query variant to the CanisterCallOrTask enum, so that the execute_call_or_task can properly execute the message or task using the execute_dts method of the hypervisor. As a result, replicated queries are now executed using DTS, as were update and tasks already.
Additionally, it renames the PausedCallExecution struct into PausedCallOrTaskExecution, the PausedUpdateHelper struct into PausedCallOrTaskHelper, the UpdateHelper struct into CallOrTaskHelper.
Inside the execute_canister_input method of the ExecutionEnvironment struct, it changes the instruction limits to have dts enabled.

f0058db9a:
Adds the SubnetSelfSize and SubnetSelfCopy variants to the SystemApiCallId enum.
Implements the ic0_subnet_self_size and ic0_subnet_self_copy methods in the SystemApiImpl struct. These methods are called in the Wasm ic0 module respectively, which are linked the inside the syscalls function.
Adds the get_subnet_id method to the SandboxSafeSystemState struct, which is called inside both the newly introduced methods of the SystemApiImpl struct.

5ee8dcf34:
Matches description.

152a69a39:
Changes the expand method of the SigsegvMemoryTracker struct to pass the number of pages to the grow method of both the accessed_bitmap and dirty_bitmap. The number of pages is obtained by dividing the delta argument by the OS page size.

773b035f2:
Reverted in 5ee8dcf34.

ef595725a:
Updates the do_update_settings method of the CanisterManager struct to call the update_on_low_wasm_memory_hook_condition method of the canister state at the end of the function.
Updates the install_code method of the CanisterManager struct to call the update_on_low_wasm_memory_hook_condition method of the canister state if the result of the install code is DtsInstallCodeResult::Finished.

1f525daa8:
Changes the reject_subnet_output_request method of the CanisterQueues struct to receive a BTreeSet of principals instead of a Vec. Same for the reject_subnet_output_request method of the SystemState struct, and the reject_subnet_message_routing and reject_subnet_message_user_error methods of the SystemStateModifications struct.

a9c6652c4:
Matches description.

54b7f0e7f:
Adds the memory_usage_checks method to the CanisterManager struct. This method extracts the logic of checking if the new memory usage after taking a snapshot of the canister doesn’t make the canister freeze, the logic of checking if the subnet has enough memory for the new memory usage and the logic of reserving the necessary cycles from the take_canister_snapshot method of the CanisterManager struct.
Additionally, it adds the same checks to the load_canister_snapshot method of the CanisterManager struct by calling the newly introduced memory_usage_checks method.

cde707113:
Merges the into_system_state_modifications and take_system_state_modifications methods of the SystemApiImpl struct into the take_system_state_modifications method. Cleans the code inside this method to get the system state modifications from the sandbox_safe_system_state.take_changes() method.

4f0fa4671:
Matches description.


Proposal 135204 – ilbert | CodeGov

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

Review:
This release is the same as the one in 135203 with the addition of the commit 37c059a6e, 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 topics and Synapse on most other topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron and KongSwap with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

1 Like

Proposal: 135203

Summary:

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

Detailed Review:

Features:

  • baee73359 Consensus,Interface: re-enable hashes-in-blocks feature on all subnets (#3562)
    Notes: HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag has been set to true after verifying that it has been running perfectly fine for a while on all other subnets.
    Review: Code changes look good and match release notes.
  • a97325591 Crypto,Interface(crypto): make some conversions to KeyId infallible (#3718)
    Notes: KeyId which was previously converted using fallible TryFrom<&CspPublicKey> , TryFrom<&TlsPublicKeyCert> and TryFrom<(AlgorithmId, &B)> is now changed to infallible From<&CspPublicKey>, From<&TlsPublicKeyCert> and From<(AlgorithmId, &B)>. This also removed the need to unwrap by getting keyId directly.
    Review: Code changes look good and match release notes.
  • 8ac49d3dc Crypto,Interface: Add VetKdProtocol to Crypto trait (#3726)
    Notes: VetKdProtocol is now added to Crypto trait so that it can now be used by ConsensusCrypto trait.
    Review: Code changes look good and match release notes.
  • 15a51647e Crypto,Interface(crypto): implement VetKdProtocol trait for CryptoComponent (#3565)
    Notes: Enhancements has been done to deserialization function, error types in VetKd module. Enum VetKdEncryptedKeyShareCreationVaultError has been enhanced to have more specific error types. Also implemented creation and verification of vetkd shares with some improved logging.
    Review: Code changes look good and match release notes.
  • b7a0b3d3b Execution,Interface: Implement DTS for replicated queries (#3557)
    Notes: Implemented long waited Deterministic time slicing feature so that longer canister operations can execute over multiple blocks. All the update and replicated calls are now under single file call_or_task . Lots of tests have also been added.
    Review: Code changes look good and match release notes.
  • f0058db9a Execution,Interface: Support for ic0.subnet_self() (#3637)
    Notes: Two new functions are added to system api subnet_self_size() and subnet_self_copy to make canisters aware of on which subnet they are deployed.
    Review: Code changes look good and match release notes.
  • d343919be Interface(sns-cli): Cleanup store canister after upgrading an SNS-controlled canister (#3738)
    Notes: Functionality has been added to send unused cycle to the original cycle ledger while upgrading a SNS controlled canister. Later on this functionality will be exposed by a SNS cli command.
    Review: Code changes look good and match release notes.
  • 9fcffc7fc Interface: enable testnet4 support in the bitcoin adapter (#3267)
    Notes: Its a small change in bitcoin adapter to enable the support for bitcoin testnet4.
    Review: Code changes look good and match release notes.
  • 728875118 Node(metrics-proxy): add rules for mr_blocks_proposed_total and mr_blocks_not_proposed_total (#3750)
    Notes: Two new metrics have been added to GuestOS monitoring mr_blocks_proposed_total and mr_blocks_not_proposed_total .
    Review: Code changes look good and match release notes.

Bugfixes:

  • 90a1b566e Consensus,Interface: move metrics to all messages (#3690)
    Notes: In bitcoin adapter now all the messages are added to the metric which were previously only for getData and getHeader.
    Review: Code changes look good and match release notes.
  • fbe09a672 Consensus,Interface: increase the number of bitcoin in flight requests to 1000. (#3768)
    Notes: Two new constants have been introduced for requests in flight in bitcoin adapter. MAX_IN_FLIGHT_BLOCKS with value 100 for mainnet, and TESTNET4_MAX_IN_FLIGHT_BLOCKS with value 1000 fr testnet4.
    Review: Code changes look good and match release notes.
  • 2608017f2 Consensus,Interface: reduce the bitcoin adapter maximum response size to 1MB for testnet4 (#3769)
    Notes: This PR reduces the max response size in the bitcoin adapter to 1B for testnet4 to avoid problems with blocks taking too long to serialize.
    Review: Code changes look good and match release notes.
  • 22eda91d6 Consensus,Interface: don’t clone blocks during get_successors (#3687)
    Notes: Since block response can we very large and cloning them takes time, sync::Arc is now used to be able to process testnet4 requests in 50ms timeout.
    Review: Code changes look good and match release notes.
  • eb4a6d5a8 Consensus,Interface: introduce backpressure from consensus to the networking layer by using bounded channels (#2340)
    Notes: backpresseure is introduced from consensus to networking layer by changing from unbounded channels and corresponding streams to bounded channel. tokio::sync::mpsc::unbounded_channel(); to tokio::sync::mpsc::channel, UnboundedReceiverStream to ReceiverStream and UnboundedSender to Sender.
    Review: Code changes look good and match release notes.
  • 5ee8dcf34 Execution,Interface: revert Run hook after CanisterWasmMemoryLimitExceeded error is fixed (#3850)
    Notes: Its a simple revert of a previous commit fix: EXC-1838 Run hook after CanisterWasmMemoryLimitExceeded error is… · dfinity/ic@773b035 · GitHub, with a minor refactor in CallOrTaskHelper.
    Review: Code changes look good and match release notes.
  • 152a69a39 Execution,Interface: Use pages for tracking changes (#3776)
    Notes: A fix has been introduced in grow function of to use num_pages instead of delta ( which were just bytes ).
    Review: Code changes look good and match release notes.
  • 773b035f2 Execution,Interface: Run hook after CanisterWasmMemoryLimitExceeded error is fixed (#3631)
    Notes: This is the change which was previously reverted in commit 5ee8dcf34.
    Review: Code changes look good and match release notes.
  • ef595725a Execution,Interface: Update hook status after update of canister settings (#3624)
    Notes: It’s a simple fix to update low_wasm_memory hook when any of canister settings are updated from wasm_memory_threshold or wasm_memory_limit or memory_allocation.
    Review: Code changes look good and match release notes.
  • 5703c4382 Owners(custom domains): bump cloudflare-rs due to CF API changes (#3744)
    Notes: Updates cloudflare dependency to accommodate Cloudflare API changes.
    Review: Code changes look good and match release notes.

Performance improvements:

  • 1f525daa8 Execution,Interface,Message Routing(MR): Look up SubnetIds from a BTreeSet instead of from a Vec (#3779)
    Notes: Performance boost changes are introduced by storing subnet_ids in canister state as BTreeSet instead of a vector, since the resulting collection is only used for lookup of a specific subnet ids.
    Review: Code changes look good and match release notes.

Chores:

  • 3868259d1 Consensus,Interface: improve return types use by the assembler (#2215)
    Notes: Improves response type from Assembler is changed from Result to AssembleResult.
    Review: Code changes look good and match release notes.
  • a9c6652c4 Execution,Interface,Message Routing: Fix some typos in MR code (#3719)
    Notes: Minor typo fixes in comments in canister_state/queues.rs
    Review: Code changes look good and match release notes.
  • 8a5bdfd43 Interface(crypto): Move ed25519 crate to packages (#3770)
    Notes: This PR moves ic-crypto-ed25519 crate to ic/packages so that it can be published to crates.io, also refactored the code to accommodate this and use the new name ic-ed25519.
    Review: Code changes look good and match release notes.
  • 3fd26f17a Interface,Message Routing: Remove old storage logic (#3708)
    Notes: Removes the lsmt_status feature flag and all old storage code associated with it.
    Review: Code changes look good and match release notes.
  • 192b37ddd Node: Update Base Image Refs [2025-01-30-0807] (#3680)
    Notes: Updates the IC OS base image reference.
    Review: Code changes look good and match release notes.

Refactoring:

  • 54b7f0e7f Execution,Interface: Add memory usage checks when loading a snapshot for consistency (#3789)
    Notes: This refactor extracts out memory usage check related from take_canister_snapshot and make it part of function memory_usage_checks so that it can also be used by load_canister_snapshot.
    Review: Code changes look good and match release notes.
  • cde707113 Execution,Interface: Consolidate how system state modifications are extracted from the System API (#3706)
    Notes: Repaces function into_system_state_modifications with take_system_state_modifications , and then returns SystemSatemodifications by calling self.sandbox_safe_system_state.take_changes();
    Also clean up some code by using system_state_modifications at various places.
    Review: Code changes look good and match release notes.

Tests:

  • 61639eaa4 Crypto,Interface(crypto): add smoke test for VetKdProtocol impl (#3649)
    Notes: Adds smoke tests for previously added VetKdProtocol trait.
    Review: Code changes look good and match release notes.
  • 0206830a6 Interface(btc): Port ckBTC tests from legacy ECDSA to chain key Registry API (#3820)
    Notes: ckBTC tests are updated to use the new chain key api and removed old EcdsaConfig.
    Review: Code changes look good and match release notes.
  • 340f17da6 Interface(sns-cli): Port UpgradeSnsControlledCanister with Large Wasm integration test to use SNS CLI with PocketIc (#3696)
    Notes: Certain functions are made public for example PocketIc::update_call_with_effective_principal . Refactor quick a code in pocketic and moves some code to nns agent impl. Upgrade_sns_controlled_canister is now called from test upgrade_sns_controlled_canister_with_large_wasm. Renames the test as well.
    Review: Code changes look good and match release notes.

Documentation:

4f0fa4671 Execution,Interface: Compilation cache file ownership (#3667)
Notes: Updates some documentation and error message in serialized_modules.rs
Review: Code changes look good and match release notes.

Proposal: 135204

Summary:

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

Detailed Review:

Other changes:

37c059a6e Consensus,Interface: Revert “feat: re-enable hashes-in-blocks feature on all subnets (#3562)”
Notes: Simple change to HASHES_IN_BLOCKS_FEATURE_ENABLED making it false in case some issues are detected.
Review: Code changes look good and match release notes.

Proposal 135203 - Yuvika | ZenithCode

Summary

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

Commits

Features:

  • baee73359
    Summary: re-enable hashes-in-blocks feature on all subnets.
    Notes: Enable the HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag by setting it to True.
    Review: The description matches the code changes.

  • a97325591
    Summary: make some conversions to KeyId infallible.
    Notes: Simplify KeyId creation by using infallible From conversions from CspPublicKey, TlsPublicKeyCert, and (AlgorithmId, &B), eliminating the need for fallible TryFrom and subsequent unwrapping.
    Review: The description matches the code changes.

  • 8ac49d3dc
    Summary: Add VetKdProtocol to Crypto trait.
    Notes: Integrate the VetKdProtocol into the Crypto trait, making it accessible for use by the ConsensusCrypto trait.
    Review: The description matches the code changes.

  • 15a51647e
    Summary: Implement VetKdProtocol trait for CryptoComponent.
    Notes: Improve VetKd module’s deserialization, error handling (including more specific error types in VetKdEncryptedKeyShareCreationVaultError) , share creation, and verification along with enhanced logging.
    Review: The description matches the code changes.

  • b7a0b3d3b
    Summary: Implement DTS for replicated queries.
    Notes:
    Review: The description matches the code changes.

  • f0058db9a
    Summary: Support for ic0.subnet_self().
    Notes: Introduce deterministic time slicing, allowing long-running canister operations to span multiple blocks, and consolidates update/replicated calls into a single file with extensive new tests.
    Review: The description matches the code changes.

  • d343919be
    Summary: Cleanup store canister after upgrading an SNS-controlled canister.
    Notes: Allow unused cycles from SNS-controlled canister upgrades to be returned to the original cycle ledger, a feature that will eventually be accessible via an SNS CLI command.
    Review: The description matches the code changes.

  • 9fcffc7fc
    Summary: enable testnet4 support in the bitcoin adapter.
    Notes: Minor update to enable Bitcoin adapter support for the testnet4 network.
    Review: The description matches the code changes.

  • 728875118
    Summary: add rules for mr_blocks_proposed_total and mr_blocks_not_proposed_total.
    Notes: Add mr_blocks_proposed_total and mr_blocks_not_proposed_total metrics to GuestOS monitoring.
    Review: The description matches the code changes.

Bugfixes:

  • 90a1b566e
    Summary: move metrics to all messages.
    Notes: Bitcoin adapter can now track all message types in its metrics, not just getData and getHeader messages.
    Review: The description matches the code changes.

  • fbe09a672
    Summary: increase the number of bitcoin in flight requests to 1000.
    Notes: Add constants MAX_IN_FLIGHT_BLOCKS (100 for mainnet) and TESTNET4_MAX_IN_FLIGHT_BLOCKS (1000 for testnet4) to limit concurrent Bitcoin adapter requests.
    Review: The description matches the code changes.

  • 2608017f2
    Summary: reduce the bitcoin adapter maximum response size to 1MB for testnet4.
    Notes: Reduce the maximum Bitcoin adapter response size on testnet4 to 1GB to prevent slow block serialization issues.
    Review: The description matches the code changes.

  • 22eda91d6
    Summary: don’t clone blocks during get_successors.
    Notes: Use sync::Arc to avoid slow cloning of potentially large block responses and meet the 50ms timeout for testnet4 requests.
    Review: The description matches the code changes.

  • eb4a6d5a8
    Summary: introduce backpressure from consensus to the networking layer by using bounded channels.
    Notes: Introduce backpressure from consensus to networking by replacing unbounded channels with bounded channels (tokio::sync::mpsc::channel) and their corresponding streams (ReceiverStream instead of UnboundedReceiverStream), enabling flow control.
    Review: The description matches the code changes.

  • 5ee8dcf34
    Summary: revert Run hook after CanisterWasmMemoryLimitExceeded error is fixed.
    Notes: Revert 773b035f2.
    Review: The description matches the code changes.

  • 152a69a39
    Summary: Use pages for tracking changes.
    Notes: Update the grow function to correctly use the number of pages instead of bytes (delta) for memory allocation.
    Review: The description matches the code changes.

  • 773b035f2
    Summary: Run hook after CanisterWasmMemoryLimitExceeded error is fixed.
    Notes: Revert commit 5ee8dcf34.
    Review: The description matches the code changes.

  • ef595725a
    Summary: Update hook status after update of canister settings.
    Notes: Update the low_wasm_memory hook whenever canister settings related to WASM memory (threshold, limit, or allocation) are modified.
    Review: The description matches the code changes.

  • 5703c4382
    Summary: bump cloudflare-rs due to CF API changes.
    Notes: Update the cloudflare-rs dependency to its latest version.
    Review: The description matches the code changes.

Performance improvements:

  • 1f525daa8
    Summary: Look up SubnetIds from a BTreeSet instead of from a Vec.
    Notes: Improve performance by storing subnet IDs in canister state as a BTreeSet instead of a vector, optimizing for efficient lookups.
    Review: The description matches the code changes.

Chores:

  • 3868259d1
    Summary: improve return types use by the assembler.
    Notes: Update the Assembler’s response type from Result to the more descriptive AssembleResult.
    Review: The description matches the code changes.

  • a9c6652c4
    Summary: Fix some typos in MR code.
    Notes: Fix typos within comments in the canister_state/queues.rs file.
    Review: The description matches the code changes.

  • 8a5bdfd43
    Summary: Move ed25519 crate to packages.
    Notes: Move and rename ic-crypto-ed25519 crate to ic/packages/ic-ed25519 so it can be published on crates.io.
    Review: The description matches the code changes.

  • 3fd26f17a
    Summary: Remove old storage logic.
    Notes: Remove the lsmt_status feature flag and its associated legacy storage code.
    Review: The description matches the code changes.

  • 192b37ddd
    Summary: Update Base Image Refs [2025-01-30-0807].
    Notes: Update the base image references used for the IC OS.
    Review: The description matches the code changes.

Refactoring:

  • 54b7f0e7f
    Summary: Add memory usage checks when loading a snapshot for consistency.
    Notes: Consolidate memory usage checks into a new memory_usage_checks function, enabling its reuse by both take_canister_snapshot and load_canister_snapshot.
    Review: The description matches the code changes.

  • cde707113
    Summary: Execution,Interface: Consolidate how system state modifications are extracted from the System API.
    Notes: Consolidate logic from into_system_state_modifications() and take_system_state_modifications() into take_system_state_modifications method and refactor the code to retrieve system state modifications via self.sandbox_safe_system_state.take_changes().
    Review: The description matches the code changes.Tests:

  • 61639eaa4
    Summary: add smoke test for VetKdProtocol impl.
    Notes: Add tests for VetKdProtocol trait.
    Review: The description matches the code changes.

  • 0206830a6
    Summary: Port ckBTC tests from legacy ECDSA to chain key Registry API.
    Notes: Update ckBTC tests to use the new chain key API and remove usages of deprecated EcdsaConfig.
    Review: The description matches the code changes.

  • 340f17da6
    Summary: Port UpgradeSnsControlledCanister with Large Wasm integration test to use SNS CLI with PocketIc.
    Notes: Refactors PocketIC code, moves some code to the NNS agent implementation, renames the upgrade_sns_controlled_canister test and update certain PocketIC functions public (e.g., update_call_with_effective_principal).
    Review: The description matches the code changes.

Documentation:

  • 4f0fa4671
    Summary: Compilation cache file ownership.
    Notes: Refactor (update docs and error messages) within the serialized_modules.rs file
    Review: The description matches the code changes.

Proposal 135204

Summary

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

Commits

Other changes:

  • 37c059a6e
    Summary: Revert "feat: re-enable hashes-in-blocks feature on all subnets ( #3562 )" Full list of changes (including the ones that are not relevant to GuestOS) can be found on GitHub .
    Notes: Disable the HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag by setting it to False.
    Review: The description matches the code changes.

Proposal 135203 | Tim - CodeGov

Vote: Adopt

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

I’ve reviewed all commits aside from Execution commits as detailed below. Key changes include adding support for Bitcoin Testnet4 and changes to reduce testnet-specific errors, changes to VetKD key share logic and changes to P2P artifact handling.

Review

Features:
[baee73359]
Re-enables the hashes-in-blocks feature by setting the HASHES_IN_BLOCKS_FEATURE_ENABLED flag to true, with the intention of enabling this feature for all subnets.

[a97325591]
In the function to compute a KeyId from an AlgorithmId and a slice of bytes, a new domain separator is added for use when the bytes size is > 2^32 but < 2^64, thus replacing part of the error case used previously. Extends the same logic to other conversions to KeyId, returning Self type rather than Result, such that the conversion will panic if the byte slice length is more than 2^64 (which would not realistically occur).

[8ac49d3dc]
Implements VetKdProtocol for TempCryptoComponentGeneric with methods create_encrypted_key_share, verify_encrypted_key_share, combine_encrypted_key_shares and verify_encrypted_key.

[15a51647e]
Splits some VetKD key share-related error types into more specific types. Adds or removes some implementations for VetKdEncryptedKeyShareContent.

[d343919be]
Adds logic to prepare for the addition of a refund_after_sns_controlled_canister_upgrade command.

[9fcffc7fc]
Adds Testnet4 to the networks accessible by the bitcoin adaptor. Modifies the compute_next_difficulty function to use last_adjustment_header.bits instead of prev_header.bits (only for Testnet4) in order to prevent the difficulty being inappropriately lowered and causing a block storm.

[728875118]
Matches description. Adds rules to keep mr_blocks_proposed_total and mr_blocks_not_proposed_total metrics.

Bugfixes:
[90a1b566e]
Moves bitcoin connection manager metrics from impl Channel for ConnectionManager to impl ConnectionManager so that all messages will be recorded in the metrics.

[fbe09a672]
Adds constant TESTNET4_MAX_IN_FLIGHT_BLOCKS, set at 1000, to replace the previously used value of 100 in the case of Testnet4 so as to prevent the situation where all the queued up blocks are outside the main chain.

[2608017f2]
Adds constant TESTNET4_MAX_RESPONSE_SIZE, set at 1 million, so as to reduce the get_successor_blocks maximum response size from 2MB to 1MB for Testnet4 only, as explained in the description.

[22eda91d6]
Stores blocks using an Arc rather than cloning them in the get_successor_blocks function in order to improve the timing of Testnet4 requests.

[eb4a6d5a8]
Replaces unbounded sender and receiver channels with bounded channels in P2P artifact and consensus managers.

[5703c4382]
Version update for cloudflare-rs.

Chores:
[3868259d1]
Changes return types in the P2P artifact assembler, in most cases by using new enum AssembleResult in place of a Result type, + resulting code changes elsewhere.

[8a5bdfd43]
Moves the ed25519 crate from ‎rs/crypto/ed25519 to packages/ic-ed25519 and renames it accordingly.

[3fd26f17a]
Removes several sections of storage logic used prior to the introduction of LSMT, including the lsmt_status flag and related code.

[192b37ddd]
Updates Boundary GuestOS, GuestOS, HostOS and SetupOS base image container references.

Tests:
[61639eaa4]
Adds smoke tests for VetKD key share creation.

[0206830a6]
Adapts ckBTC tests to remove reliance on EcdsaConfig as this is now obsolete.

[340f17da6]
Changes to the upgrade_sns_controlled_canister_with_large_wasm test as per the description.

Proposal 135204

Vote: Adopt

Reason: Build is successful and hashes match. The proposal consists of a single commit which reverts the enabling of the hashes-in-blocks feature in commit baee73359 above.

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 topics and Synapse on most other topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralisation of SNS projects such as WaterNeuron and KongSwap with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

1 Like

Proposal 135203 - Ipsita | ZenithCode

Summary

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

Commits

Features:

  • baee73359
    Summary: Consensus,Interface: re-enable hashes-in-blocks feature on all subnets (#3562)
    Notes: The HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag is turned back on.
    Review: Code changes match the commit message.

  • a97325591
    Summary: Crypto,Interface(crypto): make some conversions to KeyId infallible (#3718)
    Notes: Simplifies error handling by replacing TryFrom with From, eliminating failure scenarios that could only occur with unrealistically large byte sizes.
    Review: Code changes match the commit message.

  • 8ac49d3dc
    Summary: Crypto,Interface: Add VetKdProtocol to Crypto trait (#3726)
    Notes: Introduces VetKdProtocol into the Crypto supertrait, making it available for use within existing cryptographic frameworks.
    Review: Code changes match the commit message.

  • 15a51647e
    Summary: Crypto,Interface(crypto): implement VetKdProtocol trait for CryptoComponent (#3565)
    Notes: Refactors error handling for VetKdEncryptedKeyShareCreationVaultError::InvalidArgument, breaking it down into more specific categories. Additionally, enables key share creation and combination within CryptoComponentImpl.
    Review: Code changes match the commit message.

  • b7a0b3d3b
    Summary: Execution,Interface: Implement DTS for replicated queries (#3557)
    Notes: Unifies the handling of update calls and replicated queries in a shared file (call_or_task), allowing replicated queries to leverage the existing update logic.
    Review: Code changes match the commit message.

  • f0058db9a
    Summary: Execution,Interface: Support for ic0.subnet_self() (#3637)
    Notes: Introduces subnet_self_size and subnet_self_copy functions to help canisters identify the subnet they belong to.
    Review: Code changes match the commit message.

  • d343919be
    Summary: Interface(sns-cli): Cleanup store canister after upgrading an SNS-controlled canister (#3738)
    Notes: Enables reclaiming of cycles following an SNS canister upgrade. While the refund process isn’t in place yet, the store canister is removed as an interim measure.
    Review: Code changes match the commit message.

  • 9fcffc7fc
    Summary: Interface: enable testnet4 support in the bitcoin adapter (#3267)
    Notes: Introduces minor refinements, allowing the Bitcoin adapter to connect with testnet4, which offers improved reliability compared to other testnets.
    Review: Code changes match the commit message.

  • 728875118
    Summary: Node(metrics-proxy): add rules for mr_blocks_proposed_total and mr_blocks_not_proposed_total (#3750)
    Notes: Adjusts GuestOS metric filters to retain data on mr_blocks_proposed_total and mr_blocks_not_proposed_total, ensuring better observability.
    Review: Code changes match the commit message.

Bugfixes:

  • 90a1b566e
    Summary: Consensus,Interface: move metrics to all messages (#3690)
    Notes: Adjusts the bitcoin_messages_sent metric to increment for every outgoing message, rather than only for specific message types.
    Review: Code changes match the commit message.

  • fbe09a672
    Summary: Consensus,Interface: increase the number of bitcoin in-flight requests to 1000 (#3768)
    Notes: Separates the MAX_IN_FLIGHT_BLOCKS constant into distinct values for mainnet and testnet4. The higher limit (1000) for testnet4 ensures smooth operation even when over 100 forked blocks exist.
    Review: Code changes match the commit message.

  • 2608017f2
    Summary: Consensus,Interface: reduce the bitcoin adapter maximum response size to 1MB for testnet4 (#3769)
    Notes: Limits the Bitcoin adapter’s response size to 1MB when communicating with testnet4, preventing excessive serialization delays for large blocks.
    Review: Code changes match the commit message.

  • 22eda91d6
    Summary: Consensus,Interface: don’t clone blocks during get_successors (#3687)
    Notes: Instead of duplicating blocks in the Bitcoin adapter, the system now shares references using Arc, improving efficiency.
    Review: Code changes match the commit message.

  • eb4a6d5a8
    Summary: Consensus,Interface: introduce backpressure from consensus to the networking layer using bounded channels (#2340)
    Notes: Uses bounded channels to regulate artifact flow from the consensus manager to the artifact manager. If the channels reach capacity, new event submissions must wait for available space.
    Review: Code changes match the commit message.

  • 5ee8dcf34
    Summary: Execution,Interface: revert Run hook after CanisterWasmMemoryLimitExceeded error is fixed (#3850)
    Notes: Reverts the previous change (773b035f2) since the CanisterWasmMemoryLimitExceeded error has now been addressed.
    Review: Code changes match the commit message.

  • 152a69a39
    Summary: Execution,Interface: Use pages for tracking changes (#3776)
    Notes: Fixes an issue where PageMap::grow received a byte count instead of a page count, ensuring proper memory expansion.
    Review: Code changes match the commit message.

  • 773b035f2
    Summary: Execution,Interface: Run hook after CanisterWasmMemoryLimitExceeded error is fixed (#3631)
    Notes: This change was later reverted by 5ee8dcf34, making it no longer relevant.
    Review: Code changes match the commit message.

  • ef595725a
    Summary: Execution,Interface: Update hook status after updating canister settings (#3624)
    Notes: Ensures the “on low wasm memory” hook status is properly updated when modifying canister settings or installing a canister.
    Review: Code changes match the commit message.

  • 5703c4382
    Summary: Owners(custom domains): bump cloudflare-rs due to CF API changes (#3744)
    Notes: Updates the cloudflare-rs dependency to align with the latest Cloudflare API changes.
    Review: Code changes match the commit message.

Chores:

  • 3868259d1
    Summary: Consensus,Interface: improve return types use by the assembler (#2215)
    Notes: Refactors how response types are managed by replacing direct Result returns with a new generic type, AssembleResult, improving code clarity.
    Review: Code changes match the commit message.

  • a9c6652c4
    Summary: Execution,Interface,Message Routing: Fix some typos in MR code (#3719)
    Notes: Fixes several small typographical errors to improve code readability.
    Review: Code changes match the commit message.

  • 8a5bdfd43
    Summary: Interface(crypto): Move ed25519 crate to packages (#3770)
    Notes: Moves ic-crypto-ed25519 into packages/ic-ed25519, setting it up for eventual publication on crates.io.
    Review: Code changes match the commit message.

  • 3fd26f17a
    Summary: Interface,Message Routing: Remove old storage logic (#3708)
    Notes: Removes the lsmt_status flag, as it is now universally enabled. Additionally, eliminates the legacy storage code that was previously executed only when the flag was disabled.
    Review: Code changes match the commit message.

  • 192b37ddd
    Summary: Node: Update Base Image Refs [2025-01-30-0807] (#3680)
    Notes: Refreshes IC-OS base image references to the latest available version.
    Review: Code changes match the commit message.

Refactoring:

  • 54b7f0e7f
    Summary: Execution,Interface: Add memory usage checks when loading a snapshot for consistency (#3789)
    Notes: Refactors the logic by extracting the memory check for subnets into a separate function, enabling it to be reused after loading the canister snapshot.
    Review: Code changes match the commit message.

  • cde707113
    Summary: Execution,Interface: Consolidate how system state modifications are extracted from the System API (#3706)
    Notes: Combines two similar functions, into_system_state_modifications and take_system_state_modifications, into one unified function for simplicity and clarity.
    Review: Code changes match the commit message.

Tests:

  • 61639eaa4
    Summary: Implements initial test cases to verify the functionality of the VetKd integration within the CryptoComponent.
    Notes: Adds basic test cases to verify the VetKdProtocol integration in the CryptoComponent.
    Review: Code changes match the commit message.

  • 0206830a6
    Summary: Interface(btc): Port ckBTC tests from legacy ECDSA to chain key Registry API (#3820)
    Notes: Phases out the deprecated ecdsa_config from the Registry and updates the ckBTC tests to use the new chain_key_config.
    Review: Code changes match the commit message.

  • 340f17da6
    Summary: Interface(sns-cli): Port UpgradeSnsControlledCanister with Large Wasm integration test to use SNS CLI with PocketIc (#3696)
    Notes: Refactors and renames multiple components within PocketIC, adds helper functions for setting up NNS canisterIds, and modifies the upgrade_sns_controlled_canister_with_large_wasm.rs test to invoke sns_cli::upgrade_sns_controlled_canister instead of using sns::governance.
    Review: Code changes match the commit message.

Documentation:

  • 4f0fa4671
    Summary: Execution,Interface: Compilation cache file ownership (#3667)
    Notes: Revises doc comments and error messages for improved clarity.
    Review: Code changes match the commit message.

Proposal 135204

Other changes:

  • 4f0fa4671
    Summary: Revert "feat: re-enable hashes-in-blocks feature on all subnets
    Notes: Updates HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag from True to False.
    Review: Code changes match the commit message.
1 Like

Proposal 135203 – Zane | CodeGov

Vote: ADOPT

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

Features:

baee73359 Enabled HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag.

a97325591 Replaced TryFrom trait implementations of KeyId for (AlgorithmId,AsRef<[u8]>), &CspPublicKey and &TlsPublicKeyCert with From. Changed conversion logic for (AlgorithmId,AsRef<[u8]>) to only fail for values greater than 2^64, in which case the replica panics.

8ac49d3dc Added VetKdProtocol bound to Crypto trait and implement it for TempCryptoComponentGeneric.

15a51647e Implemented VetKdProtocol trait for the CryptoComponent and replaced InvalidArgument in VetKdEncryptedKeyShareCreationVaultError with more granular error variants.

b7a0b3d3b Modified CanisterCallOrTask enum definition and implementation to add a new variant field for query calls and renamed Call to Update. Extended logic used to execute update messages and canister tasks to also handle replicated query calls, so they can now leverage DTS too. execution_environment/src/execution/update.rs has been renamed to ..call_or_task.rs alongside methods and structs inside it to better reflect their new purpose and code has been added to handle CanisterCallOrTask::Query by either using the existing logic for updates or adding new bespoke one where necessary, e.g when persisting state changes. execute_replicated_query and the module containing it have been deleted and its usage in execute_canister_input has been replaced with execute_call_or_task.

f0058db9a Added 2 new methods to system API: subnet_self_size and subnet_self_copy, which allow a canister to query the subnet id encoded as a Blob of the subnet it is running on. The former returns the size of the subnet id for the calling canister, while the latter copies the subnet id into the calling canister heap.

Bugfixes:

5ee8dcf34 Reverts 773b035f2, while keeping structural changes to CanisterCallOrTask from b7a0b3d3b.

152a69a39 Modified expand method of SigsegvMemoryTracker to use number of pages instead of delta bytes size when calling grow.

773b035f2 Reverted by 5ee8dcf34.

ef595725a Update on_low_wasm_memory hook status after canister installation/upgrade and settings update.

5703c4382 Bumped cloudflare-rs git revision.

Performance improvements:

1f525daa8 In sandbox_safe_system_state.rs modified apply_changes to collect subnet ids using a BTreeSet instead of a vector and updated reject_subnet_output_request, reject_subnet_message_routing, reject_subnet_message_user_error signatures accordingly.

Chores:

a9c6652c4 Fixed typos in comments.

8a5bdfd43 Moved ic-crypto-ed25519 crate to packages dir and renamed it to ic-ed25519. Updated imports and usages to match the changes.

3fd26f17a Removed tests, feature flag checks and logic related to the old storage layer.

192b37ddd Bumped ICOS image refs.

Refactoring:

54b7f0e7f Moved checks used to ensure a canister has enough cycles to allocate new memory without freezing and that the subnet has enough available memory for the allocation from take_canister_snapshot to a separate helper method called memory_usage_checks. The method is also called by load_canister_snapshot to ensure consistency and make sure it is safe to deduct any requested memory from SubnetAvailableMemory.

cde707113 Merged into_system_state_modifications and take_system_state_modifications into a single method called take_system_state_modifications.

Documentation:

4f0fa4671 Added comments for the compilation cache and improved error messages returned when the replica panics in from_serialized_module

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 topics and Synapse on most other topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron and KongSwap with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

1 Like

Proposal 135204 – Zane | CodeGov

Vote: ADOPT
Reason: Build completes successfully and hashes match, this build is the same as the one proposed with 135203 but with the feature flag for hashes in blocks feature disabled, so I’ve decided voted to adopt.

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 topics and Synapse on most other topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron and KongSwap with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

1 Like

Proposal #135203 — Zack | CodeGov

for release-2025-02-06_12-26-base.

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

Refactoring:
54b7f0e7f Execution,Interface:
Memory checks are moved into memory_usage_checks function, out of take_canister_snapshot and are used when loading a snapshot.
In the load_canister_snapshot self.memory_usage_checks(…) is called to validate the new memory usage (new_memory_usage) against:
subnet_size: The size of the subnet.
canister: Information about the canister.
round_limits: Limits for the current round.
old_memory_usage: The previous memory usage.
resource_saturation: Information about resource saturation.
If memory_usage_checks returns an error (Err(err)), the function returns with that error and the number of instructions used (instructions_used).
If the checks pass, the code tries to deduct the memory difference from the subnet’s available memory.
The round_limits.subnet_available_memory.try_decrement(...) attempts to decrement the available memory.
The amount to decrement is the difference between the new and old memory usage: new_memory_usage.saturating_sub(&old_memory_usage). saturating_sub prevents underflow; if new_memory_usage is less than old_memory_usage, the result will be 0.
The .expect(…) call is used so if try_decrement fails (which it shouldn’t, given the check that was performed), the program will panic and terminate with the error message.

cde707113 Execution,Interface:
Logic from two similiar functions are merged in take_system_state_modifications (second beeing into_system_state_modifications) when system state mods are extracted from the API.

Tests:
61639eaa4 Crypto,Interface(crypto):
New test added for the new VetKd implementation and helper functions where copied from threshold_sigs_with_ni_dkg.rs .

0206830a6 Interface(btc):
For ckBTC test the new Registry API uses chain_key_config instead of legacy ecdsa_config that gets removed.

340f17da6 Interface(sns-cli):
Refactoring for PocketIC mainly for upgrade_sns_controlled_canister_with_large_wasm.rs to use SNS cli.
STORE_CANISTER_INITIAL_CYCLES_BALANCE is now increased to 5 trillion cycles.

Documentation:
4f0fa4671 Execution,Interface: Compilation cache file ownership
Update of comments for Compilation cache file ownership and data to disk serialization panic messages.

Proposal #135204 — Zack | CodeGov

for release-2025-02-06_12-26-revert-hashes-in-blocks.

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

Other changes:
37c059a6e Consensus,Interface: Revert “feat: re-enable hashes-in-blocks feature on all subnets"
Matches description.

About CodeGov (click to expand).

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these topics and Synapse on most other topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron and KongSwap with a known neuron and credible Followees.


Learn more about CodeGov and its mission at codegov.org.

1 Like