Voting for a new IC release - c2e5826

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

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

  • [7653676ce] Consensus: feat(CON-1103): Implement BatchPayloadBuilder for QueryStats
  • [e097687da] Consensus: fix(consensus): swap the error counters labels “expired_requests” <> “invalid_keyid_requests”
  • [9beadb415] Crypto: chore(crypto): Always optimize p256 and k256 crates
  • [8c1a676e3] Crypto: chore(crypto): Upgrade bip32 crate to 0.5.0
  • [afaf16ec5] Crypto: chore(crypto): fix broken link in IDKG documentation
  • [a3ac44678] Crypto: chore(crypto): remove obsolete dependency on internal crypto crate
  • [d95b2cb0e] Crypto: feat(crypto): Add support for threshold ECDSA P256 signatures
  • [3d8309b06] Crypto: feat(crypto): Support MEGa encryption with mixed curves
  • [1a01f85fc] Crypto: feat(crypto): Use only pks read lock when possible for iDKG retain
  • [7d93856d8] Crypto: feat(crypto):, Only acquire SKS write lock when necessary for NI-DKG update_forward_secure_epoch
  • [3fbadcab6] Crypto: fix(cketh): improve handling of eth_get_logs
  • [5a874d1e5] Crypto: perf(crypto): avoid double serialization in vault RPC communication and add runtime metrics for serialization
  • [af7208c24] Execution: chore: Add new error for failed creation canister operation
  • [ee9e5ccf5] Execution: chore: Require that certain fields exist for subnet metrics
  • [96f3de576] Execution: feat: Implement burn_cycles system api
  • [3137eb3f5] Execution: fix: Reject response BitcoinPayloadBuilder
  • [e81d2fef7] Execution: fix: Take message memory into account when calculating the freezing threshold
  • [330cceebd] Financial Integrations/Message Routing: feat(cketh): events for the normal withdrawal flow [override-didc-check]
  • [863ca074d] Financial Integrations/Message Routing: feat(cketh): record the initiator of a withdrawal request
  • [bb093eeca] Message Routing: Assert data can fit into single chunk when appending single chunk file to split manifest
  • [3c16de524] Message Routing: chore: Metric for copying ReplicatedState
  • [b3168e25f] Message Routing: fix: Check liveness of the Tip thread in debug
  • [f401c7177] Networking: chore: Add the starting interval height as part of the DkgMessageId key used for the in-memory poll
  • [d1902ac0e] Networking: chore: instead of having counters for total and count use a histogram
  • [c2e5826a7] Networking: Revert “dbf1b2039d chore: Remove the filter templating and use directly the height”
  • [e1bdd05b5] Node: Add sync commands to possibly resolve HostOS nondeterminism source
  • [abf1d6606] Node: Add zstd to SetupOS
  • [1ad201eb5] Node: Always include AMD initramfs in SetupOS
  • [e64de01ea] Node: Fix small network bug in HostOS and SetupOS
  • [f1f8bdf1f] Node: Fix unset variable in SetupOS
  • [15df9dfdc] Node: Fix: permissions
  • [7e9c08b91] Node: Speed up setupos install
  • [ae0fdfd5e] Node: Use a dev update image when using ic-prep
  • [82a4c9a25] Node: feat: - Report node generation status
  • [66b072419] Node: fix: - Fix cpu thread detection for gen1 nodes
  • [fa8cb52e8] Runtime: Add query stats to canister status endpoint
  • [5af138f8e] Runtime: Increase max number of globals to 1000
  • [1f3720715] Runtime: Increase table.get and ref.is_null complexity
  • [dd2169158] Runtime: Pre instantiate wasm instances during compilation
  • [e2595f074] Runtime: feat: Add call context performance counter for cleanups
  • [fdab67689] Runtime: feat: Add call context performance counter for queries
  • [a5bc09335] Runtime: feat: Add call context performance counter for responses
  • Various tech-debt management: code refactoring, docs, bug fixes, test updates

IC-OS Verification

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

# From
sudo apt-get install -y curl && curl --proto '=https' --tlsv1.2 -sSLO && chmod +x && ./ -c c2e5826a783f74a23f7e6182e24c85ee674b8893

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.


And there is another “feature build” that enables QUIC protocol for state sync. We would like to deploy it to a subset of subnets again. Here is the proposal 125321


Reviewers for the CodeGov project have completed our review of these replica updates.

Proposal ID: 125321
Full report: CodeGov portal on DSCVR

Proposal ID: 125320
Full report: CodeGov portal on DSCVR

Neuron: CodeGov
NeuronID: 2649066124191664356
Voting history: Dashboard

At the time of this comment on the forum there are still 2 days left in the voting period, which means there is still plenty of time for others to review the proposal and vote independently.

We had several very good reviews of the Release Notes on these proposals by @Zane, @cyberowl, @ZackDS, @massimoalbarello, and @ilbert. The IC-OS Verification was also performed by @Gekctek and @tiago89. I recommend folks talk a look and see the excellent work that was performed on these reviews by the entire CodeGov team. Feel free to comment here if you have any questions or suggestions.


Hey @Luka here are some potential discrepancies that were found by the CodeGov team on Proposal 125320. I bring these to your attention in case you want to alert the change owner for further review. None of these issues caused the respective CodeGov reviewer to reject the proposal, so they should be minor.

@Zane was curious why a value was hardcoded instead of using an existing constant…
Category: Runtime

  • Increases MAX_GLOBALS from 300 to 1000. A test has been updated to reflect the new limit, wonder if there is a reason that lead them to hardcode the value instead of using the existing constant.

@massimoalbarello indicated that it’s not clear how the changes match the commit message…

  • not clear to me why the changes reflect the commit description but there is nothing suspicious

@ilbert indicated there is a discrepancy between the commit message and the code change…

  • Moves QueryStatsPayloadBuilderImpl into file. Validator is not implemented as stated in the commit message.

@ilbert expressed concern that function docs are wrong since a function was renamed…

  • Introduces would_retain_idkg_public_keys_modify_pubkey_store function in PublicKeyStore trait to check if the keystore would be modified. The function docs are wrong, since retain_most_recent_idkg_public_keys_up_to_inclusive has been renamed to retain_idkg_public_keys_since.

Thanks for the review and feedback, @wpb and @ilbert! The last comment regarding the function docs is valid - an existing internal function was renamed, but the docs still reference the old function name. We’ll have this fixed for the next release.


Increases MAX_GLOBALS from 300 to 1000. A test has been updated to reflect the new limit, wonder if there is a reason that lead them to hardcode the value instead of using the existing constant.

The IC Interface Specification defines the maximum supported number of globals. The above mentioned test is part of the specification acceptance suite, and it must be aligned with the specification, not the code base.

There are many spec constants scattered across the code base, so defining all those specification constants as a separate module might be a good idea…