Upgrade NNS Canister: 7hfb6-caaaa-aaaar-qadga-cai to wasm with hash: f78a511c02440ce698342fef144ca48128e41f4a887bb3b8ac41103a59fb81cd
#144736 · Open · 4 d left · proposed Nov 6, 2026
Summary
Proposal to upgrade the EVM RPC canister
Repository: https://github.com/dfinity/evm-rpc-canister.git
Git hash: ec1844d250ef533ffb46992b66df8d8cd5ee2e3b
New compressed Wasm hash: f78a511c02440ce698342fef144ca48128e41f4a887bb3b8ac41103a59fb81cd
Upgrade args hash: 6005397a2ddf2ee644ceaca123c9afbd2360f0644e7e5e6c4ac320a5f7bd4a82
Target canister: 7hfb6-caaaa-aaaar-qadga-cai
Previous EVM RPC proposal: https://dashboard.internetcomputer.org/proposal/144024
Motivation
Upgrade the EVM RPC canister to the latest version v2.9.0.
This release fixes failing eth_getTransactionReceipt requests. Some JSON-RPC providers, such as PublicNode and BlockPi, serve the same transaction receipt with the JSON fields in a different order depending on which backend handles the request. The currently deployed version does not normalize receipt responses before HTTPS outcall consensus, so replicas receiving different field orders fail to reach consensus, and the request fails for that provider. This currently causes transaction receipt lookups by the ckETH minter to fail. Version v2.9.0 normalizes the responses of eth_getTransactionReceipt, eth_call and eth_getTransactionCount before consensus.
The release also bumps ic-cdk to v0.20.2 and Rust to v1.97.1, and upgrades other dependencies.
See the GitHub release v2.9.0 for more details.
Release Notes
git log --format='%C(auto) %h %s' 1f81042160863749455fcd78a69e9b55ae327454..ec1844d250ef533ffb46992b66df8d8cd5ee2e3b --
ec1844d chore: release (#657)
5f83b00 test: reach consensus when replicas receive JSON fields in different order (#655)
ab7e636 fix: remove unimplemented batch endpoints from public interface (#654)
883ade3 build(deps): bump candid_parser from 0.4.0 to 0.4.1 (#650)
717f734 chore: upgrade EVM RPC canister to v2.8.0 (#651)
30a4863 ci: bump foundry-toolchain to v1.9.1 (#652)
5768cdf build(deps): bump thiserror from 2.0.19 to 2.0.20 (#640)
264ae25 build(deps): bump candid from 0.10.34 to 0.10.35 (#638)
d08932e build(deps): bump async-trait from 0.1.91 to 0.1.92 (#637)
f6b390f feat: derive Hash for evm_rpc_types hex wrappers (#596)
83afabf build(deps): bump candid from 0.10.32 to 0.10.34 (#633)
b77392d build(deps): bump http from 1.4.2 to 1.5.0 (#632)
d73a92c build(deps): bump alloy-sol-types from 1.6.0 to 1.6.1 (#631)
3beb877 build(deps): bump quinn-proto from 0.11.14 to 0.11.16 (#630)
f3f22d4 build(deps): bump async-trait from 0.1.89 to 0.1.91 (#629)
44f3a20 build(deps): bump alloy-rpc-types from 2.0.5 to 2.2.0 (#628)
6663017 build(deps): bump alloy-primitives from 1.6.0 to 1.6.1 (#627)
57e9afa build(deps): bump alloy-sol-macro from 1.6.0 to 1.6.1 (#626)
7089e79 build(deps): bump tokio from 1.52.3 to 1.53.1 (#625)
6b74587 build(deps): bump serde_json from 1.0.150 to 1.0.151 (#624)
10fde4e build(deps): bump minicbor from 2.2.2 to 2.3.0 (#623)
de1e996 build(deps): bump alloy-consensus from 2.0.5 to 2.2.0 (#618)
2589822 build(deps): override brace-expansion with 5.0.7 to resolve alert #70 (#622)
dfd8a1a build: bump rust toolchain from 1.91.0 to 1.97.1 (#621)
493cb1d build(deps): override decompress with @xhmikosr/decompress to resolve alert #68 (#620)
db66431 build(deps): bump tower-http from 0.6.11 to 0.7.0 (#605)
6a640d3 build(deps): bump candid_parser from 0.3.2 to 0.4.0 (#609)
927b6f2 build(deps): bump regex from 1.12.4 to 1.13.1 (#619)
c9dcb08 build(deps): bump thiserror from 2.0.18 to 2.0.19 (#617)
85dbe1b build(deps): bump candid from 0.10.29 to 0.10.32 (#615)
6d7d9b3 build(deps): bump rand from 0.10.1 to 0.10.2 (#611)
7d71776 build(deps): bump serde_with from 3.18.0 to 3.21.0 (#616)
58f1821 build(deps): bump ic-mops to 2.15.2 to resolve tar advisory (#610)
39f2894 fix(deps): bump undici to 7.28.0 (#606)
b4efe09 build(deps): bump http from 1.4.1 to 1.4.2 (#603)
9c80435 build(deps): bump ic-cdk from 0.20.1 to 0.20.2 (#601)
3427bc2 build(deps): bump regex from 1.12.3 to 1.12.4 (#602)
2b87872 build(deps): bump zeroize from 1.8.2 to 1.9.0 (#600)
2e20d00 build(deps): bump candid from 0.10.28 to 0.10.29 (#599)
b4b571e build(deps): bump http from 1.4.0 to 1.4.1 (#598)
0a96e0d build(deps): bump tower-http from 0.6.10 to 0.6.11 (#592)
a6d4d9f build(deps): bump candid from 0.10.27 to 0.10.28 (#595)
c6f71ae build(deps): bump alloy-rpc-types from 2.0.1 to 2.0.4 (#593)
d52d49b build(deps): bump candid_parser from 0.3.1 to 0.3.2 (#591)
f196358 build(deps): bump serde_json from 1.0.149 to 1.0.150 (#590)
2f98b4a chore: add mise for unified tool versioning (#589)
7d972f1 chore: migrate from npm to pnpm (#583)
9024523 build(deps): bump alloy-consensus from 2.0.1 to 2.0.5 (#576)
7950c11 build(deps): bump alloy-primitives from 1.5.7 to 1.6.0 (#588)
ff69f9a build(deps): bump alloy-sol-macro from 1.5.7 to 1.6.0 (#586)
76f5489 build(deps): bump minicbor from 2.2.1 to 2.2.2 (#585)
ada5cf1 build(deps): bump rand from 0.9.4 to 0.10.1 (#577)
ecbe4ef chore(deps): bump pocket-ic to v13 with companion runtime crates (#584)
9461f05 chore: migrate from dfx to icp-cli (#570)
5ab6687 build(deps): bump tokio from 1.52.1 to 1.52.3 (#582)
d051e39 build(deps): bump tower-http from 0.6.8 to 0.6.10 (#581)
ad737f9 ci: pin ic-wasm to 0.9.10 (#578)
35036ef ci: add checks-pass aggregator job (#580)
6d01cfb fix: unbreak main from alloy 2.0, rand 0.9, and ic-mops 2.x bumps (#579)
fb0ebb2 build(deps): bump alloy-consensus from 1.8.3 to 2.0.1 (#573)
487bd3b build(deps): bump sha2 from 0.10.9 to 0.11.0 (#572)
c3e25e5 build(deps): bump alloy-rpc-types from 1.8.3 to 2.0.1 (#574)
6fddb9e build(deps): bump rand from 0.8.6 to 0.9.4 (#575)
0c2fe2a chore: consolidated dependency refresh (#569)
2fb3741 chore: pin GitHub Actions to commit SHAs (#567)
8c33268 build(deps): bump rustls-webpki from 0.103.10 to 0.103.12 (#568)
d7d9d38 build(deps): bump tar and ic-mops (#565)
11f9fc5 build(deps-dev): bump picomatch from 2.3.1 to 2.3.2 (#566)
a27d58d feat: Types for batch calls (#558)
cac92e4 build: update canhttp and other dependencies to latest releases (#560)
b41130f build(deps): bump quinn-proto from 0.11.13 to 0.11.14 (#559)
7a67410 chore: release (#556)
527f7f6 build!: update `ic-canister-runtime` to prevent inter-canister calls when stopping (#555)
b62366f build(deps): bump time from 0.3.46 to 0.3.47 (#554)
fb5c6b9 build(deps): bump bytes from 1.11.0 to 1.11.1 (#553)
13f4cd5 feat: batch JSON-RPC response transformations (#547)
d285d4d build(deps): upgrade dependencies (#552)
325df7e build(deps): bump alloy-* from 1.1.2 to 1.5.2 (#551)
f7f7468 chore: dfinity/defi-team -> dfinity/defi (#550)
4365d18 refactor: add observability module (#545)
464d9e0 ci: add `BOT_APPROVED_FILES` (#549)
cc3d70a refactor: move `MetricRpcMethod` to request extension (#544)
2668b1f refactor: conversions between `evm_rpc_types` and `evm_rpc::rpc_client::json::requests` (#543)
6000bce refactor: specify `ResponseTransform` for each JSON-RPC method (#541)
f46f4ea chore: proposal to upgrade to v2.8.0 (#540)
6a9354b docs: use `alloy-sol-macro` and `alloy-sol-types` crates instead of `alloy` (#539)
b7eceef chore: bump `pocket-ic` to v11.0.0 (#538)
d403c40 chore: update `CODEOWNERS` file (#537)
Upgrade args
git fetch
git checkout ec1844d250ef533ffb46992b66df8d8cd5ee2e3b
didc encode -d candid/evm_rpc.did -t '(InstallArgs)' '(record {})' | xxd -r -p | sha256sum
Wasm Verification
Verify that the hash of the gzipped WASM matches the proposed hash.
git fetch
git checkout ec1844d250ef533ffb46992b66df8d8cd5ee2e3b
"./scripts/docker-build"
sha256sum ./evm_rpc.wasm.gzOfficial view: dashboard.internetcomputer.org/proposal/144736