Proposal to elect new release rc--2024-11-07_03-07

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

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

Release Notes for release-2024-11-07_03-07-base (f88938214b16584075196e13d0af7c50f671131a)

This release is based on changes since release-2024-10-31_03-09-base (88227422ae6e3bfc6c74a5216309a3b86a93744b).

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:

  • 199229e43 Consensus,Interface(consensus): Increase notary delay caused by certified-finalized gap (#2450)
  • 43739c195 Consensus,Interface: Protect in-memory states for CUP creation and validation (#2223)
  • 210f1ef89 Crypto,Interface(crypto): make NiDkgTag and NiDkgId non-Copy (#2347)
  • d4bba541c Crypto,Interface(crypto): Add support for Taproot input to Schnorr signatures (#1803)
  • 41af49d62 Execution,Interface: Bump the state size limit to 1 TiB and stable memory limit to 500 GiB (#2465)
  • 6219a37d2 Execution,Interface: Convert executed instructions to cycles differently for Wasm64 (#2291)
  • 13d33a4c4 Execution,Interface,Message Routing: Enforce subnet-wide best-effort message memory limit (#1835)
  • 1380e49da Execution,Interface,Networking: Update canister creation fee (#2353)
  • 4991a5757 Interface,Message Routing: Add an mr_receive_batch_latency_seconds metric (#2417)

Bugfixes:

  • 6224cc4ac Execution,Interface: Replace delete_snapshots functionality with remove (#2395)

Chores:

  • a78ac7f75 Consensus,Interface(consensus): avoid block hash computation in several places (#2344)
  • b9cee2240 Consensus,Interface(consensus): adjust dynamic block maker delay (#2356)
  • 0a835ccc6 Execution,Interface: Apply priority credit at the end of the round (#2381)
  • 6db068eef Execution,Interface: dedupe threshold signature tests (#2463)
  • 05699db1a Execution,Interface: Drop a couple of unnecessary take_canisters() calls (#2414)
  • e0693573c Execution,Interface: upgrade wasmtime to 26 (#2205)
  • 648407ef2 Execution,Interface: update error message when launcher process received signal (#2438)
  • 9f6064d6a Execution,Interface: Consolidate scheduling logic (#2379)
  • e6b14dab0 Execution,Interface: Remove canister snapshots feature flag (#1664)
  • cfd341385 Execution,Interface: Adjust Wasm64 dirty page overhead (#1725)
  • 132ddd83c Execution,Interface: Fix doc comment (#2301)
  • 44095f27b Interface: Generalize CUP’s ChainKeyInitialization (#2337)
  • 15d752c5d Interface: avoid reexports from StateMachine tests (#2370)
  • 150771e1f Interface(system-tests): adding API BNs to ic-prep and creating a testnet with API BNs (#2290)
  • a05b99a4b Interface,Message Routing: Log extra states to keep and add error counter for fallback (#2454)
  • d3ec1a960 Interface,Networking: polish the sender side of the consensus_manager (mainly remove legacy terms) (#2466)
  • ae2693f61 Interface,Networking: remove unused clippy allows (#2371)

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/f88938214b16584075196e13d0af7c50f671131a/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c f88938214b16584075196e13d0af7c50f671131a --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

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

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

Release Notes for release-2024-11-07_03-07-hashes-in-blocks (cd26db8c93f887e76baae202aab150390e41983f)

This release is based on changes since release-2024-11-07_03-07-base (f88938214b16584075196e13d0af7c50f671131a).

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:

  • cd26db8c9 Interface,Networking(Consensus): Enable the hashes-in-blocks feature

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/cd26db8c93f887e76baae202aab150390e41983f/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c cd26db8c93f887e76baae202aab150390e41983f --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

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

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

Release Notes for release-2024-11-07_03-07-6.11-kernel (c47e172dfd13d07e864742fea93188c3e9dc81fd)

This release is based on changes since release-2024-11-07_03-07-base (f88938214b16584075196e13d0af7c50f671131a).

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:

  • c47e172df Node: Use Linux Kernel 6.11 in GuestOS

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/c47e172dfd13d07e864742fea93188c3e9dc81fd/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c c47e172dfd13d07e864742fea93188c3e9dc81fd --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

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

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

Release Notes for release-2024-11-07_03-07-ubuntu20.04 (a62848817cec7ae50618a87a526c85d020283fd9)

This release is based on changes since release-2024-11-07_03-07-base (f88938214b16584075196e13d0af7c50f671131a).

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:

  • a62848817 Node: Revert “feat: Upgrade GuestOS to 24.04 (#938)”

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/a62848817cec7ae50618a87a526c85d020283fd9/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c a62848817cec7ae50618a87a526c85d020283fd9 --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 - 134032

Vote: ADOPT

Reason:

I didn’t find anything that stood out wrong from the commits. All the hashes match and code changes matched the commit descriptions.

Hash Match: MATCH

2 Urls: MATCH

Feedback:

Proposer Check: MATCH

Overall Summary:

ARTIFACT_PUSH_THRESHOLD_BYTES was made private even though it was public before. I hope nothing else is using that constant. I don’t think this is an issue but I thought I would mention it anyway. Overall didn’t find anything wrong and all the changes related to Wasm 64 are exciting for the upcoming release.

Commits Summary ### Features: [199229e43](https://github.com/dfinity/ic/commit/199229e43) Introduction of a `BACKLOG_DELAY_MILLIS` parameter. The updated version reduces `ACCEPTABLE_FINALIZATION_CERTIFICATION_GAP` from 3 to 2 and introduces `BACKLOG_DELAY_MILLIS` (set to 2,000 milliseconds), which further delays notarization based on the gap between the latest finalized and certified states, helping to manage backlog in consensus processing.

43739c195
Fetch the highest finalized summary block instead of just the highest summary block, thereby ensuring that only finalized states are used in consensus processes. get_pending_idkg_cup_heights function identifies finalized IDKG summary block heights without a CUP, this function enables the Purger to track and retain only these essential heights, which are needed for CUP creation.

210f1ef89
Make NiDkgTag and NiDkgId non-Copy, which now necessitate cloning at various locations where these types are used. The redundant dkg_id parameters in the NiDkgCspClient functions have been removed to avoid unnecessary clones, and additional clone operations were added for instances of NiDkgTag and NiDkgId across functions where these types are accessed in non-Copy contexts.

d4bba541c
Adapting threshold Schnorr signature creation to support Taproot by adding optional taproot_tree_root arguments, allowing signatures to be tweaked according to BIP-340 for Taproot compatibility. Updates span the crypto library, tests, and utility functions, where Taproot integration necessitates modifying functions to handle taproot-related tweaks when generating and verifying Schnorr signatures. Dependencies like secp256k1 were added to support Taproot-related cryptographic operations.

41af49d62
Increases SUBNET_MEMORY_CAPACITY from 700 GiB to 1 TiB and adjusts constants like MAX_STABLE_MEMORY_IN_BYTES to 500 GIB.

6219a37d2
New WasmExecutionMode to distinguish between Wasm32 and Wasm64 execution modes, which adjusts cycle charging based on execution type to account for Wasm64’s overhead. New constants and logic in CyclesAccountManager manage differential fee calculations for Wasm64, ensuring higher costs due to bound checks and larger heap sizes in Wasm64. Additionally, various tests and configurations were updated to include this new execution mode and validate its impact on cycle charges across different execution scenarios.

13d33a4c4
Separate memory limits for guaranteed-response and best-effort messages within the subnet to manage memory utilization more precisely. A new mechanism enforces these limits by shedding best-effort messages if memory usage exceeds specified bounds, tracked by counters for the number and size of shed messages.

1380e49da
Here we see the canister_creation_fee increase to 500_000_000_000 in accordance to the forum discussion.

4991a5757
New metric receive_batch_latency.

Bugfixes:

6224cc4ac
Replaces direct removal of snapshot_ids and associated operations with a call to a helper method, remove.

Chores:

a78ac7f75
hex reorganized and encapsulated within function (block_hash_to_string). The log_entry function was refactored to be part of HashedBlock. Removal of redundant get_block_hash_string.

b9cee2240
Matches description in commit message in regard to removing DYNAMIC_DELAY_EXTRA_DURATION and using settings.unit_delay as the dynamic_delay.

0a835ccc6
Added step that applies apply_priority_credit for canisters that do not have aborted or paused executions directly within the finish_round method.

6db068eef
Matches description of removing duplicated threshold signature tests.

05699db1a
Replace calls to take_canister_state and put_canister_state with direct access to state.canister_states, eliminating intermediate state copies. There are still some other refs to take_canister_states(); so not sure if those will be refactored as well. Any defensive strategy is always good.

e0693573c
Version 0.112.2 to 0.113.0 for Cranelift components and from 25.0.2 to 26.0.0 for Wasmtime.

648407ef2
Matches description update error message when launcher process received signal.

9f6064d6a
Centralizing the apply_priority_credit and compute_capacity_percent logic into the RoundSchedule module. No new changes.

e6b14dab0
Remove the canister snapshot feature from the execution environment, which includes disabling related configuration flags and code paths associated with taking, loading, and deleting snapshots.

cfd341385
Updating more costs associated with WASM_64, this time WASM64_DIRTY_PAGE_OVERHEAD_MULTIPLIER.

132ddd83c
Fix comment for replica_controller/sandbox_process_eviction.rs

44095f27b
Update ChainKeyInitialization structure to handle initialization data more flexibly by introducing a new oneof field. This oneof field allows either InitialIDkgDealings or InitialNiDkgTranscriptRecord to be stored as initialization data, replacing the previous static handling of dealings.

15d752c5d
Adding ic-types and other new dependencies to several test modules and configurations. Test files have been updated to use ic_types::Cycles and other specific types from ic-types, rather than importing these from test utilities.

150771e1f
Add support for API boundary nodes within the test infrastructure, extending ic-prep with domain names and API boundary node configurations, and adapting the test driver to manage these nodes.

a05b99a4b
Logs in-memory states that could be removed if they are not protected by extra_heights_to_keep. The fallback process for loading checkpoints from disk has been enhanced with improved logging and metrics for better tracking.

d3ec1a960
Refactoring and renaming functions and structures within the consensus manager module. The term “advert” has been replaced with “transmit” in function and variable names to better align with the actual role of these components.

ARTIFACT_PUSH_THRESHOLD_BYTES was made private even though it was public before. I hope nothing else is using that constant.

ae2693f61
Removal of various #[allow(...)] attributes, which suppressed warnings related to unused or redundant code, like #[allow(unused)] and #[allow(clippy::redundant_clone)]. Adjustments in process_advert improve error handling.

proposal - 134034

Vote: ADOPT

Reason:

Verification script passed all checks, one commit that activates the HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: MATCH

proposal - 134035

Vote: ADOPT

Reason:

Verification script passed all checks, one commit that bumps the Linux Kernel version to 6.11.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: MATCH

proposal - 134036

Vote: ADOPT

Reason:

Verification script passed all checks, one commit that reverts a previously included commit that bumped the Ubuntu version to 24.04.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: MATCH

1 Like

Proposal 134032: Adopt

I have successfully run the build verification script and in my opinion all of the commits look fine.

Features

  • 199229e43 Consensus,Interface(consensus): Increase notary delay caused by certified-finalized gap (#2450)
    Review: Looks fine + matches description
    Notes: Increases the notarization delay earlier whenever finalization is lagging behind certification, allowing finalization to catch up.

  • 43739c195 Consensus,Interface: Protect in-memory states for CUP creation and validation (#2223)
    Review: Looks fine + matches description
    Notes: Modifies the call to remove_inmemory_states_below to pass in the extra_heights_to_keep. These extra heights to keep are the states containing IDkg payloads for which there currently exists no CUP. These states are needed to validate CUP shares on the IDkg subnets.

  • 210f1ef89 Crypto,Interface(crypto): make NiDkgTag and NiDkgId non-Copy (#2347)
    Review: Looks fine + matches description
    Notes: Stop deriving Copy for a few NiDkgTag and NiDkgId because in a subsequent commit they will be extended to include Strings fields.

  • d4bba541c Crypto,Interface(crypto): Add support for Taproot input to Schnorr signatures (#1803)
    Review: Looks fine + matches description
    Notes: Updates the canister-threshold-sig package to support Taproot signatures.

  • 41af49d62 Execution,Interface: Bump the state size limit to 1 TiB and stable memory limit to 500 GiB (#2465)
    Review: Looks fine + matches description
    Notes: Increases the max subnet memory size from 700GB to 1TB.

  • 6219a37d2 Execution,Interface: Convert executed instructions to cycles differently for Wasm64 (#2291)
    Review: Looks fine + matches description
    Notes: Increases the cycles cost per instruction for canisters running in Wasm64 mode.

  • 13d33a4c4 Execution,Interface,Message Routing: Enforce subnet-wide best-effort message memory limit (#1835)
    Review: Looks fine + matches description
    Notes: Adds enforce_best_effort_message_limit which is called at the end of each execution round to ensure the total size of best effort messages remains under the configured limit. If the limit is exceeded, the largest messages are shed until the total size is under the limit.

  • 1380e49da Execution,Interface,Networking: Update canister creation fee (#2353)
    Review: Looks fine + matches description
    Notes: Increases the canister creation fee from 0.1T to 0.5T.

  • 4991a5757 Interface,Message Routing: Add an mr_receive_batch_latency_seconds metric (#2417)
    Review: Looks fine + matches description
    Notes: Adds a metric to measure how long the message routing component waits before receiving each batch from Consensus.

Bugfixes

  • 6224cc4ac Execution,Interface: Replace delete_snapshots functionality with remove (#2395)
    Review: Looks fine + matches description
    Notes: Removes duplication by modifying delete_snapshots to simply forward on to remove which already handles all the bookkeeping.

Chores

  • a78ac7f75 Consensus,Interface(consensus): avoid block hash computation in several places (#2344)
    Review: Looks fine + matches description
    Notes: Avoids superfluous calls to calculate block hashes and removes some redundant debug logging.

  • b9cee2240 Consensus,Interface(consensus): adjust dynamic block maker delay (#2356)
    Review: Looks fine + matches description
    Notes: Reduces the dynamic block maker delay which kicks in if many non-0 rank blocks have been seen in a row. Also makes it different for app subnets and the NNS subnet since it takes different amounts of time for block makes to broadcast blocks depending on the size of the subnet.

  • 0a835ccc6 Execution,Interface: Apply priority credit at the end of the round (#2381)
    Review: Looks fine + matches description
    Notes: Moves the code which applies priority credits to canisters which have aborted or paused executions to within finish_round. This currently makes no functional change but is required for subsequent changes.

  • 6db068eef Execution,Interface: dedupe threshold signature tests (#2463)
    Review: Looks fine + matches description
    Notes: Simply removes a few tests which were duplicates.

  • 05699db1a Execution,Interface: Drop a couple of unnecessary take_canisters() calls (#2414)
    Review: Looks fine + matches description
    Notes: Avoids using take_canister_state(s) then put_canister_state(s) where possible in favour of using canister_state_mut and then modifying the canister state in place. Additionally, within induct_messages_on_same_subnet, rather than calling state.take_canister_states(), it now iterates over the canisters and only calls state.take_canister_state(..) on those canisters which it needs to modify.

  • e0693573c Execution,Interface: upgrade wasmtime to 26 (#2205)
    Review: Looks fine + matches description
    Notes: Bumps wasmtime from 25.0.2 to 26.0.0.

  • 648407ef2 Execution,Interface: update error message when launcher process received signal (#2438)
    Review: Looks fine + matches description
    Notes: Updates a sandbox launcher error message to state that in test environments the error can be ignored.

  • 9f6064d6a Execution,Interface: Consolidate scheduling logic (#2379)
    Review: Looks fine + matches description
    Notes: This moves remaining scheduling logic out of SchedulerImpl and into RoundSchedule without making any functional changes.

  • e6b14dab0 Execution,Interface: Remove canister snapshots feature flag (#1664)
    Review: Looks fine + matches description
    Notes: Removes the canister_snapshots feature flag now that it is enabled everywhere.

  • cfd341385 Execution,Interface: Adjust Wasm64 dirty page overhead (#1725)
    Review: Looks fine + matches description
    Notes: Adds a x4 multiplier when charging instructions for dirty memory pages for canisters running in Wasm64 mode.

  • 132ddd83c Execution,Interface: Fix doc comment (#2301)
    Review: Looks fine + matches description
    Notes: Fixes the doc comment on the sandbox evict function now that the logic has been updated.

  • 44095f27b Interface: Generalize CUP’s ChainKeyInitialization (#2337)
    Review: Looks fine + matches description
    Notes: Modifies the ChainKeyInitialization struct to either contain InitialIDkgDealings (as it currently does), or contain a InitialNiDkgTranscriptRecord (newly added). This is needed for it to support the upcoming vetKeys feature.

  • 15d752c5d Interface: avoid reexports from StateMachine tests (#2370)
    Review: Looks fine + matches description
    Notes: Avoids re-exporting from StateMachineTests, forcing dependents to reference the types from their source packages. This will allow StateMachineTests to be migrated to PocketIC without PocketIC having to export all of these types.

  • 150771e1f Interface(system-tests): adding API BNs to ic-prep and creating a testnet with API BNs (#2290)
    Review: Looks fine + matches description
    Notes: Updates the system test infrastructure to support spinning up IC instances which include API boundary nodes + includes the small_with_api_bn.rs case as an example.

  • a05b99a4b Interface,Message Routing: Log extra states to keep and add error counter for fallback (#2454)
    Review: Looks fine + matches description
    Notes: Adds logging around the remove_inmemory_states_below function whenever it is called with extra_heights_to_keep. Also, logs a warning if loading in-memory state results in a call to load_checkpoint since this should no longer happen. These logs will be monitored for a while before more eager removal of states is introduced.

  • d3ec1a960 Interface,Networking: polish the sender side of the consensus_manager (mainly remove legacy terms) (#2466)
    Review: Looks fine + matches description
    Notes: This simply cleans up consensus_manager by renaming a few things, reducing visibility, and splitting out some logic into helper functions. No functional change.

  • ae2693f61 Interface,Networking: remove unused clippy allows (#2371)
    Review: Looks fine + matches description
    Notes: Removes some clippy allows and makes minor adjustments to satisfy clippy accordingly (eg. using Result return values).

Proposal 134034: Adopt

I have successfully run the build verification script and the only additional commit simply enables the HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag.

Proposal 134035: Adopt

I have successfully run the build verification script and the only additional commit looks fine and bumps the Linux Kernel version to 6.11.

Proposal 134036: Adopt

I have successfully run the build verification script and the only additional commit simply reverts a previously included commit which bumped the Ubuntu version to 24.04.

1 Like

Proposal 134032

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:

  • Increases the canister stable memory limit to 500GiB
  • Increases the canister creation cycles fee from 100B to 500B
  • Continues the work to support for Wasm64 memory
  • Continues the work to support best-effort response messages

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

41af49d62:
Increases the SUBNET_MEMORY_CAPACITY from 700GiB to 1TiB. Increases the MAX_STABLE_MEMORY_IN_BYTES from 400GiB to 500GiB.

6219a37d2:
Adds the ten_update_instructions_execution_fee_wasm64 field to the CyclesAccountManagerConfig struct. This field has a value of two times the ten_update_instructions_execution_fee field of the same struct for application subnets, while it has a value of 0 for the system subnets.
Adds the WasmExecutionMode enum to keep track of whether a canister is executing in wasm32 or wasm64. This enum is passed to the execution_cost, convert_instructions_to_cycles, prepayment_for_response_execution, consume_cycles_for_instructions, prepay_execution_cycles methods of the CyclesAccountManager struct to determine the amount of cycles to charge accordingly.
Adds the check_if_wasm64_module method to the CanisterManager struct. This method parses the Wasm module and returns true only if the Wasm is configured to use Wasm64, false otherwise (also in case of errors). This method is called in the install_code_dts method of the same struct and is used as argument for the prepay_execution_cycles of the cycles_account_manager instance.
The Wasm64 cycles overhead is only charged during canister install and when loading the canister from a snapshot.
The wasm_execution_mode is also added to the OriginalContext struct, in order to pass its value to the cycles_account_manager instance’s methods during the installation of a canister.
Adds the is_wasm64_execution field to the SandboxSafeSystemState struct.

13d33a4c4:
Renames the SUBNET_MESSAGE_MEMORY_CAPACITY constant into SUBNET_GUARANTEED_RESPONSE_MESSAGE_MEMORY_CAPACITY and adds the SUBNET_BEST_EFFORT_MESSAGE_MEMORY_CAPACITY constant.
Adds the best_effort_message_memory_capacity field to the execution environment’s Config struct, which defaults to 5GiB.
Adds the shed_messages_total and shed_message_bytes_total counters to the MessageRoutingMetrics.
Renames the best_effort_memory_usage method of the CanisterQueues to best_effort_message_memory_usage, which is called in the newly introduced best_effort_message_memory_usage method of the SystemState struct.
Adds the best_effort_message_memory_taken method to the ReplicatedState struct. This method returns the sum of the total memory used by best-effort messages in the queues of each canister + the total memory used by best-effort messages in the subnet queues.
Adds the enforce_best_effort_message_limit method to the ReplicatedState struct. This method gets the total memory used by best-effort messages in the subnet and, if the memory is over the limit specified as argument, executes the logic to shed the best-effort messages. Messages are shed in a while loop until the memory usage is below the input limit.
The enforce_best_effort_message_limit method is called at the end of the execute_round method of the StateMachineImpl struct.

1380e49da:
Increases the canister creation fee from 100B to 500B Cycles. This is done by changing the canister_creation_fee value of the application subnet in the CyclesAccountManagerConfig.

6224cc4ac:
Same as proposal 133950.

0a835ccc6:
Moves the call to RoundSchedule::apply_priority_credit from the apply_scheduling_strategy method of the RoundSchedule struct to the finish_round method of the same struct.

6db068eef:
Removes the threshold signature tests from the execution_environment tests.

05699db1a:
Changes the logic to get the canister state from the replicated state in the stop_canister method of the CanisterManager struct from using the take_canister_state + put_canister_state logic to using the canister_state_mut getter. Same logic changes are applied in the induct_messages_on_same_subnet and execute_round methods of the SchedulerImpl struct.

e0693573c:
Upgrades Wasmtime from version v25 to v26. Adds tests to check if the table64 extension of the memory64 is supported as expected.

648407ef2:
Updates the error message of the panic_due_to_exit function.

9f6064d6a:
Moves the compute_capacity_percent, order_canister_round_states, apply_scheduling_strategy methods from the SchedulerImpl struct to the RoundSchedule struct.
Removes the apply_priority_credit from the CanisterState struct.

e6b14dab0:
Removes the canister_snapshots feature flag from the execution environment’s Config and HypervisorConfig. Updates the logic of the execute_subnet_message method of the ExecutionEnvironment struct accordingly.

cfd341385:
Adds the wasm64_dirty_page_overhead_multiplier field of the embedders’ Config, which defaults to 4. This field is used to calculate the dirty_page_overhead field of the WasmtimeInstance struct. The field is set to dirty_page_overhead field of the embedder config if the Wasm memory is Wasm32, otherwise, if the memory is Wasm64, it is set to dirty_page_overhead * wasm64_dirty_page_overhead_multiplier.

132ddd83c:
Matches description


Proposal 134034

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

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


Proposal 134035

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

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


Proposal 134036

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

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

1 Like

Proposal #134032

Vote: Adopted
Reason: Builds fine and the hash matches.

Review: pending.

Proposal #134034

Vote: Adopted
Reason: Builds fine and the hash matches.

Review:

The only one additional change is
Features:
cd26db8c9 Interface,Networking, Consensus: Enable the hashes-in-blocks feature.
This is done by setting HASHES_IN_BLOCKS_FEATURE_ENABLED feature falg to true. Matches description.

Proposal #134035

Vote: Adopted
Reason: Builds fine and the hash matches.

Review:

The only one additional change is
Other changes:
c47e172df Node: Use Linux Kernel 6.11 in GuestOS
Settings for the GuestOS dockerfile to force using the specific 6.11 kernel for the base image, it matches the description.

Proposal #134036

Vote: Adopted
Reason: Builds fine and the hash matches.

Review:

The only one additional change is
Other changes:
a62848817 Node: Revert “feat: Upgrade GuestOS to 24.04 (#938)”
Reverts 87ed927. Matches description.

1 Like

Proposal 134032

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

75dd48c38
Summary: Increase notary delay caused by certified-finalized gap
Notes
ACCEPTABLE_FINALIZATION_CERTIFICATION_GAP is reduced from 3 to 2
Review: Code changes matches the commit message.

43739c195
Summary: Protect in-memory states for CUP creation and validation
Notes
in_memory states at the previous checkpoint was kept till next cpu which is the whole checkpoint interval. this is the second pr to remove the checkpoints more eagerly. This fills in all the height requirements for cpu creation and validation and adds end-to-end unit test cases.
Review: Code changes matches the commit message.

210f1ef89
Summary: make NiDkgTag and NiDkgId non-Copy
Notes
This PR makes NiDkgTag and NiDkgId non copy so that in the vetkeys feature NiDkgTag id can be extended to contain the MasterPublicKeyId which is not copy since it contains the name: string.
Review: Code changes matches the commit message.

d4bba541c
Summary: Add support for Taproot input to Schnorr signatures
Notes
Updates the internal signature library which implements threshold
Schnorr protocol.
Review: Code changes matches the commit message.

41af49d62
Summary: Bump the state size limit to 1 TiB and stable memory limit to 500 GiB
Notes
Increases SUBNET_MEMORY_CAPACITY from 700 GiB to 1TB
Review: Code changes matches the commit message.

6219a37d2
Summary: Convert executed instructions to cycles differently for Wasm64
Notes
Executed instructions to cycles are treated differently for Wasm64 and Wasm32 and increases the cycles cost per instruction for canisters running Wasm64.
Review: Code changes matches the commit message.

13d33a4c4
Summary: Enforce subnet-wide best-effort message memory limit
Notes
If the total best effort memory usage increases above a threshold limit we make a priority queue and keep removing the largest memory messages until the memory usage is back under the limit.
Review: Code changes matches the commit message.

1380e49da
Summary: Update canister creation fee
Notes
Increase canister creation fee from 100_000_000_000 cycles to 500_000_000_000 cycles
Review: Code changes matches the commit message.

1380e49da
Summary: Update canister creation fee
Notes
Increase canister creation fee from 100_000_000_000 cycles to 500_000_000_000 cycles
Review: Code changes matches the commit message.

4991a5757
Summary: Add an mr_receive_batch_latency_seconds metric
Notes
Adds mr_receive_batch_latency_seconds metrics to track the latency of MessageRoutingImpl call.
Review: Code changes matches the commit message.

Bugfixes

6224cc4ac
Summary: Replace delete_snapshots functionality with remove
Notes
Removes duplicate code by making calls to remove instead of delete_snapshots which have the same functionality.
Review: Code changes matches the commit message.

Chores

a78ac7f75
Summary: avoid block hash computation in several places
Notes
Reads hash from HashedBlock and BlockStats instead of calculating the hash and also some unused code is removed.
Review: Code changes matches the commit message.

b9cee2240
Summary: adjust dynamic block maker delay
Notes
updates dynamic block maker delay from constant to unit delay. so if a rank-0 block is not created at 66% rate than we double the time allotted for the creation and distribution of the block.
Review: Code changes matches the commit message.

0a835ccc6
Summary: Apply priority credit at the end of the round
Notes
No functional changes but is required for upcoming updates, this moves the code which applies priority credit to canisters which have aborted or paused execution.
Review: Code changes matches the commit message.

6db068eef
Summary: dedupe threshold signature tests
Notes
Removes duplicate threshold signature test cases.
Review: Code changes matches the commit message.

05699db1a
Summary: Drop a couple of unnecessary take_canisters() calls
Notes
Avoids using unnecessary CanisterState::take_canisters()calls and ::put_canisters() calls.
Review: Code changes matches the commit message.

e0693573c
Summary: upgrade wasmtime to 26
Notes
upgrades wasmtime from 25.0.2 to 26.0.0
Review: Code changes matches the commit message.

648407ef2
Summary: update error message when launcher process received signal
Notes
Simply updates the error message text.
Review: Code changes matches the commit message.

9f6064d6a
Summary: Consolidate scheduling logic
Notes
No functional changes this just moves code from SchedulerImpl to RoundSchedule
Review: Code changes matches the commit message.

e6b14dab0
Summary: Remove canister snapshots feature flag
Notes
canister_snapshots feature flag is removed from test and replica code.
Review: Code changes matches the commit message.

e6b14dab0
Summary: Remove canister snapshots feature flag
Notes
canister_snapshots feature flag is removed from test and replica code.
Review: Code changes matches the commit message.

cfd341385
Summary: Adjust Wasm64 dirty page overhead
Notes
dirty memory pages are expensive and we charge 4 times for canister running dirty memory pages in wasm64 mode.
Review: Code changes matches the commit message.

cfd341385
Summary: Adjust Wasm64 dirty page overhead
Notes
dirty memory pages are expensive and we charge 4 times for canister running dirty memory pages in wasm64 mode.
Review: Code changes matches the commit message.

132ddd83c
Summary: Fix doc comment
Notes
Just some comment updates in sandbox_process_eviction.rs file
Review: Code changes matches the commit message.

44095f27b
Summary: Generalize CUP’s ChainKeyInitialization
Notes
InitialNiDkgTranscriptRecord is added to ChainKeyInitialization struct which is required to support subnets with VetKeys.
Review: Code changes matches the commit message.

15d752c5d
Summary: avoid reexports from StateMachine tests
Notes
Replaces reexported types from StateMachine tests to prepare for migration to PcoketIC
Review: Code changes matches the commit message.

150771e1f
Summary: adding API BNs to ic-prep and creating a testnet with API BNs
Notes
Adds API BNs to the system test infrastructure to spin up IC instances with API boundary nodes. A small test net has been added as an example API BNs.
Review: Code changes matches the commit message.

a05b99a4b
Summary: Log extra states to keep and add error counter for fallback
Notes
Adds logging in StateManagerImpl for Consensus calls. Also adds logs for potential removal candidates.
Review: Code changes matches the commit message.

d3ec1a960
Summary: polish the sender side of the consensus_manager (mainly remove legacy terms)
Notes
code cleanup for consensus_manager by renaming and moving code to helper functions.
Review: Code changes matches the commit message.

ae2693f61
Summary: remove unused clippy allows
Notes
remove unused clippy allows since directives like #[allow(unused)] or #[allow(dead_code)] and dangerous if misplaced as clippy skips further analysis of potential problems.
Review: Code changes matches the commit message.

Proposal 134034

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

cd26db8c9
Summary: Enable the hashes-in-blocks feature
Notes
sets HASHES_IN_BLOCKS_FEATURE_ENABLED feature flag to true
Review: Code changes matches the commit message.

Proposal 134035

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

c47e172df
Summary: Use Linux Kernel 6.11 in GuestOS
Notes
Upgrades the linux kernal version to 6.11
Review: Code changes matches the commit message.

Proposal 134036

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

a62848817
Summary: revert of Upgrade GuestOS to 24.04
Notes
previous commit is reverted which upgraded guest os to 24.04
Review: Code changes matches the commit message.

1 Like

Proposal 134032

Summary

  1. Vote: I vote to adopt the proposals
  2. Hash: Build hash from the proposal, local build and CDN matches
  3. Reasons to adopt: The release notes matches the code changes

Commit

Features

  • 75dd48c38
    Summary: Increase delay for notary due to the gap between certification and finalization.
    Notes: Reduced ACCEPTABLE_FINALIZATION_CERTIFICATION_GAP from 3 to 2.
    Review: Commit message and code changes are in sync.
  • 43739c195
    Summary: Ensure in-memory state protection for CUP creation and validation.
    Notes: Adjusts checkpoint interval management, removing unneeded checkpoints earlier and adding comprehensive tests.
    Review: Commit message aligns with the code changes.
  • 210f1ef89
    Summary: Update NiDkgTag and NiDkgId to be non-Copy.
    Notes: This change is necessary for extending NiDkgTag to include MasterPublicKeyId, which isn’t Copy due to a string field.
    Review: Code changes match the described commit message.
  • d4bba541c
    Summary: Introduce Taproot input support to Schnorr signatures.
    Notes: Modifies the signature library to include the threshold Schnorr protocol update.
    Review: Commit message and code match well.
  • 41af49d62
    Summary: Expand state size and stable memory limits.
    Notes: Increases SUBNET_MEMORY_CAPACITY from 700 GiB to 1 TiB.
    Review: Code changes reflect the stated updates.
  • 6219a37d2
    Summary: Modify instruction-to-cycle conversion for Wasm64.
    Notes: Adjusts the conversion to increase cycle costs per instruction for Wasm64.
    Review: Commit and code are consistent.
  • 13d33a4c4
    Summary: Impose memory limits for subnet-wide messages.
    Notes: Establishes a priority system to manage excess memory usage by dropping large messages.
    Review: The code aligns with the explanation in the commit.
  • 1380e49da
    Summary: Revise canister creation fee.
    Notes: Increases the fee from 100 billion cycles to 500 billion cycles.
    Review: Code modifications are accurate to the described change.
  • 4991a5757
    Summary: Introduce a metric for mr_receive_batch_latency_seconds.
    Notes: Adds a metric to track the latency of specific MessageRoutingImpl processes.
    Review: Commit message corresponds well with the implemented code.

Bugfixes

  • 6224cc4ac
    Summary: Replace delete_snapshots functionality with remove.
    Notes: Unifies code functionality by replacing redundant calls.
    Review: Accurate reflection of the code updates.

Chores

  • a78ac7f75
    Summary: Avoid redundant block hash computations.
    Notes: Uses precomputed hash values and removes obsolete code.
    Review: Clear and well-matched with the commit.
  • b9cee2240
    Summary: Modify dynamic block maker delay.
    Notes: Adjusts delay mechanisms to enhance block creation efficiency.
    Review: Matches the changes made.
  • 0a835ccc6
    Summary: Apply priority credit at round completion.
    Notes: Rearranges code for priority credit application without functional changes.
    Review: Code reflects the described update.
  • 6db068eef
    Summary: Remove duplicate threshold signature tests.
    Notes: Cleans up redundant tests.
    Review: Accurate update.
  • 05699db1a
    Summary: Eliminate redundant take_canisters() calls.
    Notes: Simplifies code to avoid unnecessary state manipulations.
    Review: Code change is accurate and matches the commit.
  • e0693573c
    Summary: Update wasmtime to version 26.
    Notes: Upgrades from 25.0.2 to 26.0.0.
    Review: Matches the commit description.
  • 648407ef2
    Summary: Update error messages for launcher signals.
    Notes: Modifies error message content for clarity.
    Review: Matches the commit details.

Proposal 134034

Summary

  1. Vote: I vote to adopt the proposals
  2. Hash: Build hash from the proposal, local build and CDN matches
  3. Reasons to adopt: The release notes matches the code changes

Commit

Features

  • cd26db8c9
    Summary: Activate hashes-in-blocks feature.
    Notes: Sets the HASHES_IN_BLOCKS_FEATURE_ENABLED flag to true.
    Review: The code updates are consistent with the commit message.

Proposal 134035

Summary

  1. Vote: I vote to adopt the proposals
  2. Hash: Build hash from the proposal, local build and CDN matches
  3. Reasons to adopt: The release notes matches the code changes

Commit

Features

  • c47e172df
    Summary: Upgrade GuestOS to Linux Kernel 6.11.
    Notes: Updates the kernel version to 6.11 for improved performance and stability.
    Review: Changes in the code align with the commit description.

Proposal 134036

Summary

  1. Vote: I vote to adopt the proposals
  2. Hash: Build hash from the proposal, local build and CDN matches
  3. Reasons to adopt: The release notes matches the code changes

Commit

Features

  • a62848817
    Summary: Revert upgrade of GuestOS to version 24.04.
    Notes: Rolls back the previous update that moved GuestOS to 24.04.
    Review: Code changes are consistent with the message of the commit.
1 Like

Proposal 134032

Summary

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

Commits

Features

  • 75dd48c38
    Summary: Increase notary delay caused by certified-finalized gap
    Notes: Reduces ACCEPTABLE_FINALIZATION_CERTIFICATION_GAP from 3 to 2
    Review: Code changes match the commit message.
  • 43739c195
    Summary: Protect in-memory states for CUP creation and validation
    Notes: Updates the handling of in-memory states, which were previously kept until the next complete checkpoint interval. The new implementation removes them sooner, ensuring all height requirements for CUP validation are met and includes robust unit test coverage.
    Review: Code changes match the commit message.
  • 210f1ef89
    Summary: Make NiDkgTag and NiDkgId non-Copy
    Notes: Modifies NiDkgTag and NiDkgId to remove the Copy trait, preparing these structures for extensions that will include non-copyable string fields like MasterPublicKeyId.
    Review: Code changes match the commit message.
  • d4bba541c
    Summary: Add support for Taproot input to Schnorr signatures
    Notes: Enhances the internal signature library to accommodate Taproot inputs for the threshold Schnorr protocol, improving cryptographic capabilities.
    Review: Code changes match the commit message.
  • 41af49d62
    Summary: Bump the state size limit to 1 TiB and stable memory limit to 500 GiB
    Notes: Expands SUBNET_MEMORY_CAPACITY from 700 GiB to 1 TiB to allow canisters greater memory resources.
    Review: Code changes match the commit message.
  • 6219a37d2
    Summary: Convert executed instructions to cycles differently for Wasm64
    Notes: Adjusts the conversion rate of executed instructions to cycles for Wasm64 canisters, increasing the cycle cost per instruction compared to Wasm32 to reflect the higher computational requirements.
    Review: Code changes match the commit message.
  • 13d33a4c4
    Summary: Enforce subnet-wide best-effort message memory limit
    Notes: Implements a mechanism to manage memory usage for best-effort messages. When memory usage exceeds a set threshold, a priority system removes the largest messages to bring usage back within limits.
    Review: Code changes match the commit message.
  • 1380e49da
    Summary: Update canister creation fee
    Notes: Increases the canister creation fee from 100 billion cycles to 500 billion cycles, aligning with new economic considerations.
    Review: Code changes match the commit message.
  • 1380e49da
    Summary: Update canister creation fee
    Notes: Adjusts the fee for creating canisters, increasing it from 100 billion to 500 billion cycles to better reflect system resource costs.
    Review: Code changes match the commit message.
  • 4991a5757
    Summary: Add an mr_receive_batch_latency_seconds metric
    Notes: Introduces a new metric, mr_receive_batch_latency_seconds, to measure the latency of MessageRoutingImpl operations, aiding in performance monitoring.
    Review: Code changes match the commit message.

Bugfixes

  • 6224cc4ac
    Summary: Replace delete_snapshots functionality with remove
    Notes: Refactors the code to use the remove function in place of delete_snapshots, streamlining the process and eliminating redundancy.
    Review: Code changes match the commit message.

Chores

  • a78ac7f75
    Summary: Avoid block hash computation in several places
    Notes: Optimizes performance by using pre-computed hashes from HashedBlock and BlockStats, while also removing unneeded code.
    Review: Code changes match the commit message.
  • b9cee2240
    Summary: Adjust dynamic block maker delay
    Notes: Changes the delay mechanism from a fixed constant to a unit-based system, doubling the time for block creation and distribution if rank-0 blocks aren’t produced at a 66% rate.
    Review: Code changes match the commit message.
  • 0a835ccc6
    Summary: Apply priority credit at the end of the round
    Notes: Rearranges priority credit application to occur at the end of each round, with no functional impact for now, but necessary for upcoming enhancements.
    Review: Code changes match the commit message.
  • 6db068eef
    Summary: Deduplicate threshold signature tests
    Notes: Cleans up the test suite by removing duplicate cases related to threshold signatures, streamlining the testing process.
    Review: Code changes match the commit message.
  • 05699db1a
    Summary: Drop a couple of unnecessary take_canisters() calls
    Notes: Refactors code to reduce unnecessary take_canisters() and put_canisters() calls, favoring direct modification with canister_state_mut where appropriate.
    Review: Code changes match the commit message.
  • e0693573c
    Summary: Upgrade wasmtime to 26
    Notes: Updates Wasmtime from version 25.0.2 to 26.0.0 to benefit from the latest enhancements and fixes.
    Review: Code changes match the commit message.
  • 648407ef2
    Summary: Update error message when launcher process receives a signal
    Notes: Revises error messages to provide clearer information, especially in test environments, where the errors can often be disregarded.
    Review: Code changes match the commit message.
  • 9f6064d6a
    Summary: Consolidate scheduling logic
    Notes: Reorganizes scheduling logic by transferring code from SchedulerImpl to RoundSchedule for better maintainability, without any functional change.
    Review: Code changes match the commit message.
  • e6b14dab0
    Summary: Remove canister snapshots feature flag
    Notes: Eliminates the canister_snapshots feature flag from the codebase, as it is now redundant and no longer needed in tests or replicas.
    Review: Code changes match the commit message.
  • e6b14dab0
    Summary: Remove canister snapshots feature flag
    Notes: Deletes the feature flag for canister_snapshots, simplifying the code since the flag has been universally adopted.
    Review: Code changes match the commit message.
  • cfd341385
    Summary: Adjust Wasm64 dirty page overhead
    Notes: Increases the cost associated with dirty memory pages in Wasm64 mode, applying a fourfold charge to account for the higher resource usage.
    Review: Code changes match the commit message.
  • cfd341385
    Summary: Adjust Wasm64 dirty page overhead
    Notes: Applies a higher cost for dirty memory pages managed by Wasm64, charging four times more to reflect the greater resource demand.
    Review: Code changes match the commit message.
  • 132ddd83c
    Summary: Fix doc comment
    Notes: Updates comments in the sandbox_process_eviction.rs file to accurately reflect the current code logic.
    Review: Code changes match the commit message.
  • 44095f27b
    Summary: Generalize CUP’s ChainKeyInitialization
    Notes: Adds InitialNiDkgTranscriptRecord to the ChainKeyInitialization struct to support vetKeys, preparing for future enhancements in handling subnets.
    Review: Code changes match the commit message.
  • 15d752c5d
    Summary: Avoid reexports from StateMachine tests
    Notes: Refactors the tests by replacing reexported types to prepare for the transition to PocketIC, making dependencies more explicit.
    Review: Code changes match the commit message.
  • 150771e1f
    Summary: Adding API BNs to ic-prep and creating a testnet with API BNs
    Notes: Expands the system test infrastructure to include API boundary nodes, providing an example with a small test network setup.
    Review: Code changes match the commit message.
  • a05b99a4b
    Summary: Log extra states to keep and add error counter for fallback
    Notes: Introduces logging for consensus calls in StateManagerImpl and potential state removal candidates, enhancing error tracking and debugging.
    Review: Code changes match the commit message.
  • d3ec1a960
    Summary: Polish the sender side of the consensus_manager (mainly remove legacy terms)
    Notes: Cleans up the consensus manager code by renaming elements and breaking code into helper functions for better clarity and maintainability.
    Review: Code changes match the commit message.
  • ae2693f61
    Summary: Remove unused clippy allows
    Notes: Removes unnecessary Clippy allow directives that were previously used, which could potentially skip crucial code analysis if misplaced.
    Review: Code changes match the commit message.

Proposal 134034

Summary

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

Commits

Features

  • cd26db8c9
    Summary: Enable the hashes-in-blocks feature
    Notes: Activates the HASHES_IN_BLOCKS_FEATURE_ENABLED flag, turning the feature on.
    Review: Code changes match the commit message.

Proposal 134035

Summary

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

Commits
  • c47e172df
    Summary: Use Linux Kernel 6.11 in GuestOS
    Notes: Upgrades the GuestOS kernel to Linux version 6.11, enhancing system performance and compatibility.
    Review: Code changes match the commit message.

Proposal 134036

Summary

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

Commits
  • a62848817
    Summary: Revert the upgrade of GuestOS to 24.04
    Notes: Reverts the previous commit that upgraded the GuestOS to version 24.04, undoing the changes.
    Review: Code changes match the commit message.
1 Like

Proposal 134032

Vote: Adopt

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

I’ve focused on reviewing Consensus, Crypto and Interface commits in order to complement @ilbert 's review. These include changes to improve network latency and to prepare for the upcoming vetKeys implementation.

Review

Features:

[199229e43]
Reduces the acceptable gap between the finalised height and the certified height from 3 blocks to 2 blocks. Introduces a backlog delay (BACKLOG_DELAY_MILLIS) set as a constant at 2 seconds to replace the existing unit_delay variable. If the gap has increased beyond the acceptable gap, then the notary delay (represented as certified_adjusted_delay) is increased by 2 seconds (the backlog delay) for each block in excess of the acceptable gap. The changes are intended to reduce this gap in order to improve network latency.

[43739c195]
Changes regarding the removal of in-memory states at checkpointed heights in order to remove states sooner. Adds extra_heights_to_keep within remove_inmemory_states_below, to consist of heights of finalised IDKG summary blocks for which there is not yet a CUP artifact. Changes the height at which to check for DKG transcripts from get_highest_summary_block to get_highest_finalized_summary_block.

[210f1ef89]
Removes the Copy trait from struct NiDkgId (ID for non-interactive DKG and enum NiDkgTag so that a String type can be used in the enum in as part of planned changes to incorporate vetKeys, which also necessitates the use of .clone() in several parts of the code.

[d4bba541c]
Adds Taproot support for Schnorr signatures. Relevant dependencies are added, taproot_tree_root is added as a parameter in several functions and required additional logic is added.

[4991a5757]
Adds a metric receive_batch_latency to indicate how long Message Routing had to wait to receive the next batch.

Chores:

[a78ac7f75]
Removes get_block_hash_string function + related changes in order to reduce or avoid doubling up on block hash computation.

[b9cee2240]
Adjusts the required delay for block making by replacing DYNAMIC_DELAY_EXTRA_DURATION (constant of 10 seconds) with settings.unit_delay (varies depending on subnet size).

[44095f27b]
Effectively adds a component transcript_record of type InitialNiDkgTranscriptRecord to ChainKeyInitialization, which is required by subnets using vetKeys. This is done using a Protobuf oneof construction as explained in the commit notes.

[15d752c5d]
Changes the source crate for various types from ic_state_machine_tests to various others so that when StateMachine tests are migrated to PocketIC then PocketIC won’t have to re-export those types.

[150771e1f]
Adds domain field to NodeConfiguration, api_boundary_nodes to TopologyConfig, and various other changes including a testnet setup in order to add API boundary nodes to the system test infrastructure.

[a05b99a4b]
Logging changes for when Consensus has extra states to keep, and addition of an error counter for success or failure of fallback to checkpoint when required states are not available in memory.

[d3ec1a960]
Renaming of various elements, mainly to remove references to “adverts” now that the P2P layer has moved away from this feature.

[ae2693f61]
Removes #[allow(unused)], #[allow(clippy::...)], etc from various code sections in order to prevent skipping over the analysis of various problems, + logging changes.

Proposal 134034

Vote: Adopt

Reason: Build is successful. Hashes match. The proposal consists of a single commit (previously seen) which enables the hashes-in-blocks feature.

Proposal 134035

Vote: Adopt

Reason: Build is successful. Hashes match. The proposal consists of a single commit (previously seen) which upgrades Linux kernel version to 6.11 and installs the kernel.

Proposal 134036

Vote: Adopt

Reason: Build is successful. Hashes match. The proposal consists of a single commit which reverts a previous commit upgrading GuestOS to Ubuntu 24.04.

Proposal 134032

Vote: ADOPT

Reason: Build is successful and hashes match, I’ve checked all Message Routing and Execution related commits, the proposed changes are sound and match their description.

Reviews

Features:

41af49d62 Increased subnet memory capacity from 700GiB to 1TiB and upper limit for stable memory from 400GiB to 500GiB. Updated instrumentation tests to take into account the new values.

6219a37d2 This commit introduces preliminary logic to charge canister differently based on whether it is using wasm64. A new constant WASM64_INSTRUCTION_COST_OVERHEAD has been added to subnet_config.rs, this is used as a multiplier for the cycle fee charged every ten instructions. CyclesAccountManagerConfig struct has a new field ten_update_instructions_execution_fee_wasm64 which is derived by multiplying the standard fee by the aforementioned constant. Different methods of the CycleAccountManager have been updated to take in the execution mode as a parameter, which is then passed around and finally used when converting execution to cycles to determine whether to use the standard or multiplied fee.
check_if_wasm64_module function was added to determine the execution mode of a canister before it is installed.

13d33a4c4 Renamed SUBNET_MESSAGE_MEMORY_CAPACITY const to SUBNET_GUARANTEED_RESPONSE_MESSAGE_MEMORY_CAPACITY and added a new one called SUBNET_BEST_EFFORT_MESSAGE_MEMORY_CAPACITY, currently set to 5GiB. The HypervisorConfig and StateMachineImpl structs also have a new field: best_effort_message_memory_capacity, the former is initialized with the new constant, the latter inherits the value propagated by the hypervisor config. At the end of each round if the size of all best effort messages is greater than the imposed limit, a priority queue is built and biggest messages are shed until memory usage is brought within expected range. Finally some metrics have been added to track the total number and size of shed messages and the time taken by the shedding process.

1380e49da Increased canister creation fee from 0.1 to 0.5XDR

4991a5757 Added receive_batch_latency metric to track time passed between each batch received by message routing.

Bugfixes:

[6224cc4ac] Already validated as part of a previous release.

Chores:

0a835ccc6 Moved call to apply_priority_credit from apply_scheduling_strategy to finish_round.

6db068eef Removed duplicate threshold signature tests from execution environment tests.

05699db1a Replaced take_canister and put_canister calls with canister_state_mut in stop_canister. In induct_messages_on_same_subnet rather than taking out all canisters states at once by calling take_canister_states, each canister is taken out only when it is iterated.

e0693573c Bumped wasmtime to v26 and added test to ensure instrumentation works with table64.

648407ef2 Updated an error message in panic_due_to_exit.

9f6064d6a Moved scheduling related methods from SchedulerImpl to RoundSchedule struct.

e6b14dab0 Deleted canister snapshots feature flag and all its related scaffholding since the feature is now always enabled by default.

cfd341385 Added wasm64_dirty_page_overhead_multiplier field to EmbeddersConfig struct, this is then used to adjust the overhead for dirty pages when in wasm64.

132ddd83c Updated evict method comment to reflect the new behaviour.

a05b99a4b Added logs to remove_inmemory_states_below method for the list of height which don’t have to be purged and any in memory states which are below the lowest height to keep. Finally in get_state_at the state_fallback_to_checkpoint metric is increased if an in memory state can’t be retrieved and load_checkpoint has to be used as a fallback, on top of this a console warning has also been added to log of this occurrence and inform whether the checkpoint was successfully loaded or not.

Proposal 134034

Vote: ADOPT

Reason: Build is successful and hashes match, this replica build is based on the same branch as 134032 but with the feature flag for hashes in block enabled

Proposal 134035

Vote: ADOPT

Reason: Build is successful and hashes match, this replica build is based on the same branch as 134032 with the only difference being updated docker files to use linux kernel version 6.11

Proposal 134036

Vote: ADOPT

Reason: Build is successful and hashes match, this replica build is based on the same branch as 134032 but it contains a commits that reverts previous changes which bumped Ubuntu to v24.04