diff --git a/Cargo.lock b/Cargo.lock index 8099a163e8..3c0bf1447c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -168,7 +168,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", "synstructure", ] @@ -180,7 +180,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -191,7 +191,25 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", +] + +[[package]] +name = "attestation" +version = "0.0.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "candid", + "der", + "getrandom 0.2.16", + "hex", + "ic-utils", + "prost", + "rand 0.8.5", + "serde", + "sev", + "sha2", + "thiserror 2.0.18", ] [[package]] @@ -298,6 +316,26 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitfield" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ba6517c6b0f2bf08be60e187ab64b038438f22dd755614d8fe4d4098c46419" +dependencies = [ + "bitfield-macros", +] + +[[package]] +name = "bitfield-macros" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f48d6ace212fdf1b45fd6b566bb40808415344642b76c3224c07c8df9da81e97" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "bitflags" version = "2.9.4" @@ -345,7 +383,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -486,9 +524,9 @@ dependencies = [ [[package]] name = "candid" -version = "0.10.20" +version = "0.10.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8037a01ec09d6c06883a38bad4f47b8d06158ad360b841e0ae5707c9884dfaf6" +checksum = "846adba6d1b4a00eeb8d4a0e4b88dfab570c25ad150cd52e51dfdc4f9d0a66cd" dependencies = [ "anyhow", "binread", @@ -507,16 +545,25 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "candid-utils" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "candid", + "candid_parser 0.1.4", +] + [[package]] name = "candid_derive" -version = "0.10.20" +version = "0.10.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb45f4d5eff3805598ee633dd80f8afb306c023249d34b5b7dfdc2080ea1df2e" +checksum = "4c367110b158be2edc335a4ad70f3467fa588d5c5675e149ef38638a8e281fc4" dependencies = [ "lazy_static", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -532,12 +579,34 @@ dependencies = [ "hex", "lalrpop", "lalrpop-util", - "logos", + "logos 0.13.0", "num-bigint", "pretty", "thiserror 1.0.69", ] +[[package]] +name = "candid_parser" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331d5ed7e9a460cd0db8f1c7641a30fb86d50c1e209a5f8053bc0fbb7c1a5da2" +dependencies = [ + "anyhow", + "candid", + "codespan-reporting", + "convert_case 0.6.0", + "handlebars", + "hex", + "lalrpop", + "lalrpop-util", + "logos 0.14.4", + "num-bigint", + "pretty", + "serde", + "thiserror 1.0.69", + "toml", +] + [[package]] name = "cargo-platform" version = "0.1.9" @@ -652,7 +721,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -857,48 +926,43 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "cycles-minting-canister" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", - "base64 0.13.1", "build-info", "build-info-build", "candid", "dfn_protobuf", "ic-base-types", "ic-cdk", - "ic-certified-map 0.3.4", "ic-crypto-tree-hash", "ic-dummy-getrandom-for-wasm", "ic-http-types", "ic-ledger-core", "ic-management-canister-types-private", "ic-metrics-encoder", - "ic-nervous-system-clients", "ic-nervous-system-common", "ic-nervous-system-common-build-metadata", "ic-nervous-system-governance", "ic-nervous-system-time-helpers", "ic-nns-common", "ic-nns-constants", - "ic-protobuf", "ic-types", + "ic-types-cycles", "ic-xrc-types", "icp-ledger", "icrc-ledger-types", "lazy_static", "on_wire", - "prost", "rand 0.8.5", "serde", "serde_cbor", - "sha2", "yansi 0.5.1", ] @@ -908,8 +972,18 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", ] [[package]] @@ -926,17 +1000,42 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.117", +] + [[package]] name = "darling_macro" version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ - "darling_core", + "darling_core 0.13.4", "quote", "syn 1.0.109", ] +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.117", +] + [[package]] name = "dary_heap" version = "0.3.7" @@ -976,6 +1075,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", + "der_derive", + "flagset", "pem-rfc7468", "zeroize", ] @@ -994,6 +1095,17 @@ dependencies = [ "rusticata-macros", ] +[[package]] +name = "der_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "deranged" version = "0.5.3" @@ -1014,6 +1126,37 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.117", +] + [[package]] name = "derive_more" version = "0.99.20" @@ -1024,13 +1167,13 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "dfn_candid" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "dfn_core", @@ -1043,7 +1186,7 @@ dependencies = [ [[package]] name = "dfn_core" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-base-types", "on_wire", @@ -1052,7 +1195,7 @@ dependencies = [ [[package]] name = "dfn_http" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "dfn_candid", @@ -1064,7 +1207,7 @@ dependencies = [ [[package]] name = "dfn_http_metrics" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "dfn_candid", "dfn_core", @@ -1077,7 +1220,7 @@ dependencies = [ [[package]] name = "dfn_protobuf" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "on_wire", "prost", @@ -1101,6 +1244,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-next" version = "2.0.0" @@ -1111,6 +1263,18 @@ dependencies = [ "dirs-sys-next", ] +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.2", + "windows-sys 0.61.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1118,7 +1282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.6", "winapi", ] @@ -1130,7 +1294,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -1204,6 +1368,7 @@ dependencies = [ "ff", "generic-array", "group", + "hkdf", "pem-rfc7468", "pkcs8", "rand_core 0.6.4", @@ -1261,14 +1426,14 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fe-derive" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "hex", - "num-bigint-dig", + "num-bigint-dig 0.9.1", "num-traits", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -1317,6 +1482,12 @@ version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" +[[package]] +name = "flagset" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe" + [[package]] name = "flate2" version = "1.1.5" @@ -1410,7 +1581,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -1521,6 +1692,22 @@ dependencies = [ "crunchy", ] +[[package]] +name = "handlebars" +version = "6.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3f9296c208515b87bd915a2f5d1163d4b3f863ba83337d7713cf478055948e" +dependencies = [ + "derive_builder", + "log", + "num-order", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror 2.0.18", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1622,7 +1809,7 @@ dependencies = [ [[package]] name = "ic-base-types" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "byte-unit", "bytes", @@ -1630,6 +1817,7 @@ dependencies = [ "comparable", "hex", "ic-crypto-sha2", + "ic-heap-bytes", "ic-protobuf", "phantom_newtype", "prost", @@ -1641,9 +1829,9 @@ dependencies = [ [[package]] name = "ic-btc-interface" -version = "0.2.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb974b1626d8a45dad7d1e2383829c6b08c5fd53b42d9f0938a51f2f0e057c7e" +checksum = "7b07cca9319498684a7477a77a66d87377ecd698b5465a3b8523484fcca16bff" dependencies = [ "candid", "datasize", @@ -1654,11 +1842,11 @@ dependencies = [ [[package]] name = "ic-btc-replica-types" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", - "ic-btc-interface", - "ic-error-types", + "ic-error-types 0.2.0 (git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base)", + "ic-interfaces-adapter-client", "ic-protobuf", "serde", "serde_bytes", @@ -1667,7 +1855,7 @@ dependencies = [ [[package]] name = "ic-canister-client-sender" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-base-types", "ic-ed25519", @@ -1680,7 +1868,7 @@ dependencies = [ [[package]] name = "ic-canister-log" version = "0.2.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "serde", ] @@ -1688,57 +1876,63 @@ dependencies = [ [[package]] name = "ic-canister-profiler" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-metrics-encoder", - "ic0 1.0.0", + "ic0", ] [[package]] name = "ic-cdk" -version = "0.17.2" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a7344f41493cbf591f13ae9f90181076f808a83af799815c3074b19c693d2e" +checksum = "818d6d5416a8f0212e1b132703b0da51e36c55f2b96677e96f2bbe7702e1bd85" dependencies = [ "candid", "ic-cdk-executor", "ic-cdk-macros", - "ic0 0.23.0", + "ic-error-types 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ic-management-canister-types", + "ic0", + "pin-project-lite", "serde", "serde_bytes", + "slotmap", + "thiserror 2.0.18", ] [[package]] name = "ic-cdk-executor" -version = "0.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903057edd3d4ff4b3fe44a64eaee1ceb73f579ba29e3ded372b63d291d7c16c2" +checksum = "33716b730ded33690b8a704bff3533fda87d229e58046823647d28816e9bcee7" +dependencies = [ + "ic0", + "slotmap", + "smallvec", +] [[package]] name = "ic-cdk-macros" -version = "0.17.2" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84cbaa50fa36d3e0616114becf81faa95a099e0d60948ed6978f30f1c77399fd" +checksum = "66dad91a214945cb3605bc9ef6901b87e2ac41e3624284c2cabba49d43aa4f43" dependencies = [ "candid", + "darling 0.20.11", "proc-macro2", "quote", - "serde", - "serde_tokenstream", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "ic-cdk-timers" -version = "0.11.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8fd812a9e26f6aa00594546f8fbf4d4853f39c3ba794c8ff11ecf86fd3c9e4" +checksum = "6852b9c1d4a82ff50fc7318599298aee8bfb082bd7e9fe7e5c1420692b2170f7" dependencies = [ - "futures", - "ic-cdk", - "ic0 0.23.0", - "serde", - "serde_bytes", + "ic-cdk-executor", + "ic0", "slotmap", ] @@ -1775,48 +1969,17 @@ dependencies = [ "sha2", ] -[[package]] -name = "ic-crypto-internal-basic-sig-der-utils" -version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" -dependencies = [ - "hex", - "ic-types", - "simple_asn1", -] - -[[package]] -name = "ic-crypto-internal-basic-sig-ed25519" -version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" -dependencies = [ - "base64 0.13.1", - "curve25519-dalek", - "hex", - "ic-crypto-internal-basic-sig-der-utils", - "ic-crypto-internal-seed", - "ic-crypto-internal-types", - "ic-crypto-secrets-containers", - "ic-ed25519", - "ic-protobuf", - "ic-types", - "rand 0.8.5", - "rand_chacha 0.3.1", - "serde", - "simple_asn1", - "zeroize", -] - [[package]] name = "ic-crypto-internal-bls12-381-type" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ + "cached", "hex", "ic_bls12_381", "itertools 0.12.1", - "lazy_static", "pairing", + "parking_lot", "paste", "rand 0.8.5", "rand_chacha 0.3.1", @@ -1828,19 +1991,20 @@ dependencies = [ [[package]] name = "ic-crypto-internal-hmac" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ - "ic-crypto-internal-sha2", + "ic-crypto-sha2", ] [[package]] name = "ic-crypto-internal-multi-sig-bls12381" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "base64 0.13.1", "hex", "ic-crypto-internal-bls12-381-type", + "ic-crypto-internal-seed", "ic-crypto-internal-types", "ic-crypto-secrets-containers", "ic-crypto-sha2", @@ -1855,7 +2019,7 @@ dependencies = [ [[package]] name = "ic-crypto-internal-seed" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "hex", "ic-crypto-sha2", @@ -1865,18 +2029,10 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ic-crypto-internal-sha2" -version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" -dependencies = [ - "sha2", -] - [[package]] name = "ic-crypto-internal-threshold-sig-bls12381" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "base64 0.13.1", "cached", @@ -1887,7 +2043,6 @@ dependencies = [ "ic-crypto-secrets-containers", "ic-crypto-sha2", "ic-types", - "lazy_static", "parking_lot", "rand 0.8.5", "rand_chacha 0.3.1", @@ -1902,7 +2057,7 @@ dependencies = [ [[package]] name = "ic-crypto-internal-threshold-sig-canister-threshold-sig" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "curve25519-dalek", "fe-derive", @@ -1916,7 +2071,6 @@ dependencies = [ "ic-crypto-sha2", "ic-types", "k256", - "lazy_static", "p256", "paste", "rand 0.8.5", @@ -1932,9 +2086,8 @@ dependencies = [ [[package]] name = "ic-crypto-internal-types" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ - "arrayvec 0.7.6", "hex", "ic-protobuf", "phantom_newtype", @@ -1942,23 +2095,23 @@ dependencies = [ "serde_cbor", "strum 0.26.3", "strum_macros 0.26.4", - "thiserror 2.0.16", + "thiserror 2.0.18", "zeroize", ] [[package]] name = "ic-crypto-node-key-validation" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "hex", "ic-base-types", - "ic-crypto-internal-basic-sig-ed25519", "ic-crypto-internal-multi-sig-bls12381", "ic-crypto-internal-threshold-sig-bls12381", "ic-crypto-internal-threshold-sig-canister-threshold-sig", "ic-crypto-internal-types", "ic-crypto-tls-cert-validation", + "ic-ed25519", "ic-protobuf", "ic-types", "serde", @@ -1967,7 +2120,7 @@ dependencies = [ [[package]] name = "ic-crypto-secrets-containers" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "serde", "zeroize", @@ -1976,18 +2129,18 @@ dependencies = [ [[package]] name = "ic-crypto-sha2" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ - "ic-crypto-internal-sha2", + "sha2", ] [[package]] name = "ic-crypto-tls-cert-validation" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "hex", - "ic-crypto-internal-basic-sig-ed25519", + "ic-ed25519", "ic-protobuf", "ic-types", "serde", @@ -1997,20 +2150,20 @@ dependencies = [ [[package]] name = "ic-crypto-tree-hash" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-crypto-internal-types", "ic-crypto-sha2", "ic-protobuf", "serde", "serde_bytes", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] name = "ic-crypto-utils-basic-sig" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-base-types", "ic-ed25519", @@ -2020,7 +2173,7 @@ dependencies = [ [[package]] name = "ic-crypto-utils-ni-dkg" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-crypto-internal-types", "ic-protobuf", @@ -2030,41 +2183,77 @@ dependencies = [ [[package]] name = "ic-dummy-getrandom-for-wasm" version = "0.1.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "getrandom 0.2.16", ] [[package]] name = "ic-ed25519" -version = "0.2.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +version = "0.6.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ - "candid", "curve25519-dalek", "ed25519-dalek", "hex-literal", "hkdf", + "ic_principal", "pem", "rand 0.8.5", - "thiserror 2.0.16", + "thiserror 2.0.18", "zeroize", ] [[package]] name = "ic-error-types" version = "0.2.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbeeb3d91aa179d6496d7293becdacedfc413c825cac79fd54ea1906f003ee55" +dependencies = [ + "serde", + "strum 0.26.3", + "strum_macros 0.26.4", +] + +[[package]] +name = "ic-error-types" +version = "0.2.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ + "ic-heap-bytes", + "regex-lite", "serde", "strum 0.26.3", "strum_macros 0.26.4", ] +[[package]] +name = "ic-heap-bytes" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "candid", + "ic-heap-bytes-derive", + "paste", + "prometheus", + "tempfile", +] + +[[package]] +name = "ic-heap-bytes-derive" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ic-http-types" version = "0.1.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "serde", @@ -2074,7 +2263,7 @@ dependencies = [ [[package]] name = "ic-icrc1" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ciborium", @@ -2090,13 +2279,13 @@ dependencies = [ "num-traits", "serde", "serde_bytes", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] name = "ic-icrc1-index-ng" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ciborium", @@ -2123,7 +2312,7 @@ dependencies = [ [[package]] name = "ic-icrc1-ledger" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -2153,7 +2342,7 @@ dependencies = [ [[package]] name = "ic-icrc1-tokens-u64" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ic-ledger-core", @@ -2163,10 +2352,19 @@ dependencies = [ "serde", ] +[[package]] +name = "ic-interfaces-adapter-client" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "strum_macros 0.26.4", + "thiserror 2.0.18", +] + [[package]] name = "ic-ledger-canister-core" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -2185,7 +2383,7 @@ dependencies = [ [[package]] name = "ic-ledger-core" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ic-ledger-hash-of", @@ -2199,7 +2397,7 @@ dependencies = [ [[package]] name = "ic-ledger-hash-of" version = "0.1.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "hex", @@ -2209,13 +2407,13 @@ dependencies = [ [[package]] name = "ic-limits" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" [[package]] name = "ic-management-canister-types" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5a939a84adbc30769d47e5de72c7b9f3713284e3ac87df4eb24795677a8df8" +checksum = "3149217e24186df3f13dc45eee14cdb3e5cad07d0b2b67bd53555c1c55462957" dependencies = [ "candid", "serde", @@ -2225,13 +2423,13 @@ dependencies = [ [[package]] name = "ic-management-canister-types-private" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ic-base-types", "ic-btc-interface", "ic-btc-replica-types", - "ic-error-types", + "ic-error-types 0.2.0 (git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base)", "ic-protobuf", "ic-utils", "num-traits", @@ -2248,10 +2446,15 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b5c7628eac357aecda461130f8074468be5aa4d258a002032d82d817f79f1f8" +[[package]] +name = "ic-nervous-system-access-list" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" + [[package]] name = "ic-nervous-system-canisters" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -2267,12 +2470,13 @@ dependencies = [ "icrc-ledger-types", "mockall", "prost", + "rust_decimal", ] [[package]] name = "ic-nervous-system-chunks" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-crypto-sha2", "ic-stable-structures 0.6.9", @@ -2283,14 +2487,13 @@ dependencies = [ [[package]] name = "ic-nervous-system-clients" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", - "dfn_candid", "dfn_core", "ic-base-types", - "ic-error-types", + "ic-error-types 0.2.0 (git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base)", "ic-ledger-core", "ic-management-canister-types-private", "ic-nervous-system-canisters", @@ -2308,16 +2511,14 @@ dependencies = [ [[package]] name = "ic-nervous-system-collections-union-multi-map" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" [[package]] name = "ic-nervous-system-common" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ - "async-trait", "base64 0.13.1", - "build-info", "build-info-build", "by_address", "bytes", @@ -2328,15 +2529,11 @@ dependencies = [ "ic-http-types", "ic-ledger-core", "ic-metrics-encoder", - "ic-nervous-system-runtime", - "ic-nns-constants", "ic-stable-structures 0.6.9", "icp-ledger", - "icrc-ledger-types", "json5", "lazy_static", "maplit", - "mockall", "num-traits", "priority-queue", "prost", @@ -2348,12 +2545,12 @@ dependencies = [ [[package]] name = "ic-nervous-system-common-build-metadata" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" [[package]] name = "ic-nervous-system-common-test-keys" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-base-types", "ic-canister-client-sender", @@ -2366,12 +2563,12 @@ dependencies = [ [[package]] name = "ic-nervous-system-common-validation" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" [[package]] name = "ic-nervous-system-governance" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-base-types", "ic-stable-structures 0.6.9", @@ -2383,7 +2580,7 @@ dependencies = [ [[package]] name = "ic-nervous-system-initial-supply" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -2397,7 +2594,7 @@ dependencies = [ [[package]] name = "ic-nervous-system-linear-map" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "rust_decimal", ] @@ -2405,12 +2602,12 @@ dependencies = [ [[package]] name = "ic-nervous-system-lock" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" [[package]] name = "ic-nervous-system-long-message" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ic-cdk", @@ -2421,7 +2618,7 @@ dependencies = [ [[package]] name = "ic-nervous-system-proto" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "comparable", @@ -2434,19 +2631,38 @@ dependencies = [ [[package]] name = "ic-nervous-system-proxied-canister-calls-tracker" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-base-types", "ic-cdk", ] +[[package]] +name = "ic-nervous-system-query-instruction-logger" +version = "0.0.1" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "ic-nervous-system-rate-limits" +version = "0.0.1" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "ic-stable-structures 0.6.9", + "serde", +] + [[package]] name = "ic-nervous-system-root" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "dfn_core", + "ic-base-types", "ic-cdk", "ic-crypto-sha2", "ic-management-canister-types-private", @@ -2460,7 +2676,7 @@ dependencies = [ [[package]] name = "ic-nervous-system-runtime" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -2473,17 +2689,17 @@ dependencies = [ [[package]] name = "ic-nervous-system-string" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" [[package]] name = "ic-nervous-system-temporary" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" [[package]] name = "ic-nervous-system-time-helpers" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-cdk", ] @@ -2491,7 +2707,7 @@ dependencies = [ [[package]] name = "ic-nervous-system-timer-task" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -2506,7 +2722,7 @@ dependencies = [ [[package]] name = "ic-nervous-system-timers" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-cdk-timers", "slotmap", @@ -2515,7 +2731,7 @@ dependencies = [ [[package]] name = "ic-nervous-system-timestamp" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "time", ] @@ -2523,7 +2739,7 @@ dependencies = [ [[package]] name = "ic-neurons-fund" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-cdk", "ic-nervous-system-common", @@ -2537,33 +2753,28 @@ dependencies = [ [[package]] name = "ic-nns-common" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "comparable", "ic-base-types", "ic-cdk", - "ic-crypto-sha2", "ic-nervous-system-canisters", - "ic-nervous-system-common", "ic-nns-constants", "ic-protobuf", "ic-registry-keys", "ic-registry-transport", "ic-stable-structures 0.6.9", - "ic-types", - "lazy_static", "num-traits", "prost", "serde", "serde_bytes", - "sha2", ] [[package]] name = "ic-nns-constants" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-base-types", "maplit", @@ -2572,13 +2783,14 @@ dependencies = [ [[package]] name = "ic-nns-governance" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "build-info", "build-info-build", - "bytes", "candid", + "candid_parser 0.1.4", + "chrono", "comparable", "csv", "cycles-minting-canister", @@ -2591,6 +2803,7 @@ dependencies = [ "ic-dummy-getrandom-for-wasm", "ic-http-types", "ic-ledger-core", + "ic-limits", "ic-management-canister-types-private", "ic-metrics-encoder", "ic-nervous-system-canisters", @@ -2598,10 +2811,14 @@ dependencies = [ "ic-nervous-system-common", "ic-nervous-system-common-build-metadata", "ic-nervous-system-common-test-keys", + "ic-nervous-system-common-validation", "ic-nervous-system-governance", "ic-nervous-system-linear-map", + "ic-nervous-system-lock", "ic-nervous-system-long-message", "ic-nervous-system-proto", + "ic-nervous-system-query-instruction-logger", + "ic-nervous-system-rate-limits", "ic-nervous-system-root", "ic-nervous-system-runtime", "ic-nervous-system-temporary", @@ -2612,8 +2829,10 @@ dependencies = [ "ic-nns-common", "ic-nns-constants", "ic-nns-governance-api", + "ic-nns-governance-conversions", + "ic-nns-governance-derive-self-describing", "ic-nns-governance-init", - "ic-nns-gtc-accounts", + "ic-nns-handler-lifeline-interface", "ic-nns-handler-root-interface", "ic-node-rewards-canister-api", "ic-protobuf", @@ -2632,7 +2851,6 @@ dependencies = [ "maplit", "mockall", "num-traits", - "on_wire", "pretty_assertions", "prometheus-parse", "prost", @@ -2643,7 +2861,6 @@ dependencies = [ "rust_decimal_macros", "serde", "serde_bytes", - "serde_json", "strum 0.26.3", "strum_macros 0.26.4", ] @@ -2651,25 +2868,19 @@ dependencies = [ [[package]] name = "ic-nns-governance-api" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ - "bytes", "candid", - "comparable", + "hex", "ic-base-types", "ic-crypto-sha2", - "ic-nervous-system-clients", "ic-nervous-system-common", "ic-nervous-system-common-validation", "ic-nervous-system-proto", "ic-nns-common", - "ic-protobuf", - "ic-sns-root", "ic-sns-swap", - "ic-types", "ic-utils", "icp-ledger", - "itertools 0.12.1", "prost", "serde", "serde_bytes", @@ -2677,15 +2888,33 @@ dependencies = [ "strum_macros 0.26.4", ] +[[package]] +name = "ic-nns-governance-conversions" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "ic-nns-governance-api", + "ic-protobuf", +] + +[[package]] +name = "ic-nns-governance-derive-self-describing" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ic-nns-governance-init" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "csv", "ic-base-types", "ic-nervous-system-common", - "ic-nervous-system-common-build-metadata", "ic-nervous-system-common-test-keys", "ic-nns-common", "ic-nns-governance-api", @@ -2695,20 +2924,27 @@ dependencies = [ ] [[package]] -name = "ic-nns-gtc-accounts" -version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +name = "ic-nns-handler-lifeline-interface" +version = "0.1.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "candid", + "ic-crypto-sha2", + "serde", +] [[package]] name = "ic-nns-handler-root-interface" version = "0.1.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", "ic-base-types", "ic-cdk", + "ic-management-canister-types-private", "ic-nervous-system-clients", + "ic-nervous-system-root", "ic-nns-constants", "serde", ] @@ -2716,22 +2952,28 @@ dependencies = [ [[package]] name = "ic-node-rewards-canister-api" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", - "ic-cdk", + "chrono", + "ic-base-types", + "ic-nervous-system-proto", + "ic-protobuf", + "rewards-calculation", + "rust_decimal", "serde", ] [[package]] name = "ic-protobuf" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "bincode", "candid", + "comparable", "erased-serde", - "ic-error-types", + "ic-error-types 0.2.0 (git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base)", "prost", "serde", "serde_json", @@ -2742,21 +2984,23 @@ dependencies = [ [[package]] name = "ic-registry-canister-api" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ + "attestation", "candid", + "der", "ic-base-types", "ic-nervous-system-chunks", "ic-registry-transport", "ic-utils", "serde", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] name = "ic-registry-canister-chunkify" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-cdk", "ic-nervous-system-chunks", @@ -2768,7 +3012,7 @@ dependencies = [ [[package]] name = "ic-registry-keys" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "hex", @@ -2781,17 +3025,29 @@ dependencies = [ [[package]] name = "ic-registry-node-provider-rewards" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-base-types", "ic-cdk", "ic-protobuf", ] +[[package]] +name = "ic-registry-resource-limits" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "candid", + "clap", + "ic-protobuf", + "ic-types", + "serde", +] + [[package]] name = "ic-registry-routing-table" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ic-base-types", @@ -2802,7 +3058,7 @@ dependencies = [ [[package]] name = "ic-registry-subnet-features" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ic-management-canister-types-private", @@ -2813,7 +3069,7 @@ dependencies = [ [[package]] name = "ic-registry-subnet-type" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "ic-protobuf", @@ -2825,7 +3081,7 @@ dependencies = [ [[package]] name = "ic-registry-transport" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -2839,14 +3095,13 @@ dependencies = [ [[package]] name = "ic-secp256k1" -version = "0.1.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +version = "0.3.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ - "candid", "hex-literal", "hmac", + "ic_principal", "k256", - "lazy_static", "num-bigint", "pem", "rand 0.8.5", @@ -2859,13 +3114,14 @@ dependencies = [ [[package]] name = "ic-sns-governance" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "base64 0.13.1", "build-info", "build-info-build", "candid", + "candid-utils", "clap", "comparable", "futures", @@ -2901,6 +3157,7 @@ dependencies = [ "ic-sns-governance-proposal-criticality", "ic-sns-governance-proposals-amount-total-limit", "ic-sns-governance-token-valuation", + "ic-stable-structures 0.6.9", "ic-utils", "icp-ledger", "icrc-ledger-client", @@ -2921,13 +3178,13 @@ dependencies = [ "sns-treasury-manager", "strum 0.26.3", "strum_macros 0.26.4", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] name = "ic-sns-governance-api" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "bytes", "candid", @@ -2952,7 +3209,7 @@ dependencies = [ [[package]] name = "ic-sns-governance-proposal-criticality" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-nervous-system-proto", ] @@ -2960,7 +3217,7 @@ dependencies = [ [[package]] name = "ic-sns-governance-proposals-amount-total-limit" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-sns-governance-token-valuation", "num-traits", @@ -2971,7 +3228,7 @@ dependencies = [ [[package]] name = "ic-sns-governance-token-valuation" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -2993,7 +3250,7 @@ dependencies = [ [[package]] name = "ic-sns-init" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "base64 0.13.1", "candid", @@ -3021,7 +3278,7 @@ dependencies = [ [[package]] name = "ic-sns-root" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "build-info", @@ -3051,7 +3308,7 @@ dependencies = [ [[package]] name = "ic-sns-swap" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "build-info", @@ -3090,7 +3347,7 @@ dependencies = [ [[package]] name = "ic-sns-swap-proto-library" version = "0.0.1" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "comparable", @@ -3105,7 +3362,7 @@ dependencies = [ [[package]] name = "ic-sns-wasm" version = "1.0.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -3127,6 +3384,7 @@ dependencies = [ "ic-sns-init", "ic-sns-root", "ic-types", + "ic-types-cycles", "ic-utils", "ic-wasm", "icrc-ledger-types", @@ -3158,7 +3416,7 @@ dependencies = [ [[package]] name = "ic-types" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "base64 0.13.1", "bincode", @@ -3170,14 +3428,17 @@ dependencies = [ "ic-crypto-internal-types", "ic-crypto-sha2", "ic-crypto-tree-hash", - "ic-error-types", + "ic-error-types 0.2.0 (git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base)", + "ic-heap-bytes", "ic-limits", "ic-management-canister-types-private", "ic-protobuf", + "ic-types-cycles", "ic-utils", "ic-validate-eq", "ic-validate-eq-derive", "maplit", + "more-asserts", "once_cell", "phantom_newtype", "prost", @@ -3189,14 +3450,28 @@ dependencies = [ "serde_with", "strum 0.26.3", "strum_macros 0.26.4", - "thiserror 2.0.16", + "thiserror 2.0.18", + "thousands", +] + +[[package]] +name = "ic-types-cycles" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "candid", + "ic-heap-bytes", + "ic-protobuf", + "serde", + "strum 0.26.3", + "strum_macros 0.26.4", "thousands", ] [[package]] name = "ic-utils" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "hex", "scoped_threadpool", @@ -3207,7 +3482,7 @@ dependencies = [ [[package]] name = "ic-validate-eq" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "ic-validate-eq-derive", ] @@ -3215,11 +3490,10 @@ dependencies = [ [[package]] name = "ic-validate-eq-derive" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ - "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -3251,15 +3525,9 @@ dependencies = [ [[package]] name = "ic0" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de254dd67bbd58073e23dc1c8553ba12fa1dc610a19de94ad2bbcd0460c067f" - -[[package]] -name = "ic0" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8877193e1921b5fd16accb0305eb46016868cd1935b05c05eca0ec007b943272" +checksum = "1499d08fd5be8f790d477e1865d63bab6a8d748300e141270c4296e6d5fdd6bc" [[package]] name = "ic_bls12_381" @@ -3293,13 +3561,11 @@ dependencies = [ [[package]] name = "icp-ledger" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "comparable", "crc32fast", - "dfn_candid", - "dfn_core", "dfn_protobuf", "hex", "ic-base-types", @@ -3308,23 +3574,20 @@ dependencies = [ "ic-ledger-canister-core", "ic-ledger-core", "ic-ledger-hash-of", - "ic-nns-constants", "ic-stable-structures 0.6.9", "icrc-ledger-types", - "lazy_static", "on_wire", "prost", "serde", "serde_bytes", "serde_cbor", - "strum 0.26.3", "strum_macros 0.26.4", ] [[package]] name = "icrc-cbor" version = "0.1.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "minicbor", @@ -3334,8 +3597,8 @@ dependencies = [ [[package]] name = "icrc-ledger-client" -version = "0.1.3" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +version = "0.1.4" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -3344,8 +3607,8 @@ dependencies = [ [[package]] name = "icrc-ledger-client-cdk" -version = "0.1.2" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +version = "0.1.4" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "async-trait", "candid", @@ -3355,8 +3618,8 @@ dependencies = [ [[package]] name = "icrc-ledger-types" -version = "0.1.10" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +version = "0.1.13" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "base32", "candid", @@ -3364,7 +3627,6 @@ dependencies = [ "hex", "ic-stable-structures 0.6.9", "icrc-cbor", - "itertools 0.12.1", "minicbor", "num-bigint", "num-traits", @@ -3525,6 +3787,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "iocuddle" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8972d5be69940353d5347a1344cb375d9b457d6809b428b05bb1ca2fb9ce007" + [[package]] name = "ipnet" version = "2.11.0" @@ -3717,6 +3985,12 @@ dependencies = [ "redox_syscall", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -3751,7 +4025,16 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c000ca4d908ff18ac99b93a062cb8958d331c3220719c52e77cb19cc6ac5d2c1" dependencies = [ - "logos-derive", + "logos-derive 0.13.0", +] + +[[package]] +name = "logos" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7251356ef8cb7aec833ddf598c6cb24d17b689d20b993f9d11a3d764e34e6458" +dependencies = [ + "logos-derive 0.14.4", ] [[package]] @@ -3765,7 +4048,22 @@ dependencies = [ "proc-macro2", "quote", "regex-syntax 0.6.29", - "syn 2.0.106", + "syn 2.0.117", +] + +[[package]] +name = "logos-codegen" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59f80069600c0d66734f5ff52cc42f2dabd6b29d205f333d61fd7832e9e9963f" +dependencies = [ + "beef", + "fnv", + "lazy_static", + "proc-macro2", + "quote", + "regex-syntax 0.8.6", + "syn 2.0.117", ] [[package]] @@ -3774,7 +4072,16 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbfc0d229f1f42d790440136d941afd806bc9e949e2bcb8faa813b0f00d1267e" dependencies = [ - "logos-codegen", + "logos-codegen 0.13.0", +] + +[[package]] +name = "logos-derive" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24fb722b06a9dc12adb0963ed585f19fc61dc5413e6a9be9422ef92c091e731d" +dependencies = [ + "logos-codegen 0.14.4", ] [[package]] @@ -3892,9 +4199,15 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] +[[package]] +name = "more-asserts" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" + [[package]] name = "multimap" version = "0.10.1" @@ -3914,7 +4227,7 @@ dependencies = [ "anyhow", "base64 0.22.1", "candid", - "candid_parser", + "candid_parser 0.3.0", "cycles-minting-canister", "dfn_candid", "dfn_protobuf", @@ -3977,17 +4290,32 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", "num-iter", "num-traits", "rand 0.8.5", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-bigint-dig" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7f9a86e097b0d187ad0e65667c2f58b9254671e86e7dbb78036b16692eae099" +dependencies = [ + "libm", + "num-integer", + "num-iter", + "num-traits", + "once_cell", + "rand 0.9.2", "serde", "smallvec", ] @@ -4018,6 +4346,21 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -4040,7 +4383,7 @@ dependencies = [ [[package]] name = "on_wire" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" [[package]] name = "once_cell" @@ -4054,6 +4397,12 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "p256" version = "0.13.2" @@ -4066,6 +4415,18 @@ dependencies = [ "sha2", ] +[[package]] +name = "p384" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "pairing" version = "0.23.0" @@ -4106,11 +4467,12 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pem" -version = "1.1.1" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", + "serde_core", ] [[package]] @@ -4135,7 +4497,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 2.0.16", + "thiserror 2.0.18", "ucd-trie", ] @@ -4159,7 +4521,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -4195,9 +4557,10 @@ dependencies = [ [[package]] name = "phantom_newtype" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", + "ic-heap-bytes", "num-traits", "serde", "slog", @@ -4230,6 +4593,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + [[package]] name = "pkcs8" version = "0.10.2" @@ -4330,7 +4704,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -4400,6 +4774,45 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "procfs" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" +dependencies = [ + "bitflags", + "hex", + "procfs-core", + "rustix 0.38.44", +] + +[[package]] +name = "procfs-core" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" +dependencies = [ + "bitflags", + "hex", +] + +[[package]] +name = "prometheus" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ca5326d8d0b950a9acd87e6a3f94745394f62e4dae1b1ee22b2bc0c394af43a" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "libc", + "memchr", + "parking_lot", + "procfs", + "protobuf", + "thiserror 2.0.18", +] + [[package]] name = "prometheus-parse" version = "0.2.5" @@ -4457,7 +4870,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.106", + "syn 2.0.117", "tempfile", ] @@ -4471,7 +4884,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -4483,6 +4896,26 @@ dependencies = [ "prost", ] +[[package]] +name = "protobuf" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror 1.0.69", +] + +[[package]] +name = "protobuf-support" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6" +dependencies = [ + "thiserror 1.0.69", +] + [[package]] name = "psm" version = "0.1.26" @@ -4627,6 +5060,17 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 2.0.18", +] + [[package]] name = "regex" version = "1.12.2" @@ -4650,6 +5094,12 @@ dependencies = [ "regex-syntax 0.8.6", ] +[[package]] +name = "regex-lite" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" + [[package]] name = "regex-syntax" version = "0.6.29" @@ -4665,11 +5115,13 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "registry-canister" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ + "attestation", "build-info", "build-info-build", "candid", + "der", "dfn_candid", "dfn_core", "dfn_http_metrics", @@ -4685,11 +5137,11 @@ dependencies = [ "ic-crypto-utils-ni-dkg", "ic-management-canister-types-private", "ic-metrics-encoder", - "ic-nervous-system-canisters", + "ic-nervous-system-access-list", "ic-nervous-system-chunks", - "ic-nervous-system-clients", "ic-nervous-system-common", "ic-nervous-system-common-build-metadata", + "ic-nervous-system-rate-limits", "ic-nervous-system-string", "ic-nervous-system-temporary", "ic-nervous-system-time-helpers", @@ -4700,13 +5152,13 @@ dependencies = [ "ic-registry-canister-chunkify", "ic-registry-keys", "ic-registry-node-provider-rewards", + "ic-registry-resource-limits", "ic-registry-routing-table", "ic-registry-subnet-features", "ic-registry-subnet-type", "ic-registry-transport", "ic-stable-structures 0.6.9", "ic-types", - "ic-utils", "idna", "ipnet", "lazy_static", @@ -4729,6 +5181,24 @@ dependencies = [ "bytecheck", ] +[[package]] +name = "rewards-calculation" +version = "0.9.0" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" +dependencies = [ + "chrono", + "ic-base-types", + "ic-cdk", + "ic-nns-constants", + "ic-protobuf", + "itertools 0.12.1", + "lazy_static", + "maplit", + "rust_decimal", + "rust_decimal_macros", + "serde", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -4774,6 +5244,26 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" +[[package]] +name = "rsa" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig 0.8.6", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "signature", + "spki", + "subtle", + "zeroize", +] + [[package]] name = "rust_decimal" version = "1.37.2" @@ -4797,7 +5287,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6268b74858287e1a062271b988a0c534bf85bbeb567fe09331bf40ed78113d5" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -4824,6 +5314,19 @@ dependencies = [ "nom", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.1.2" @@ -4833,7 +5336,7 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.11.0", "windows-sys 0.61.0", ] @@ -4913,10 +5416,11 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -4939,15 +5443,24 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -4963,15 +5476,12 @@ dependencies = [ ] [[package]] -name = "serde_tokenstream" -version = "0.2.2" +name = "serde_spanned" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64060d864397305347a78851c51588fd283767e7e7589829e8121d65512340f1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ - "proc-macro2", - "quote", "serde", - "syn 2.0.106", ] [[package]] @@ -4990,7 +5500,7 @@ version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" dependencies = [ - "darling", + "darling 0.13.4", "proc-macro2", "quote", "syn 1.0.109", @@ -5009,6 +5519,29 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "sev" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2ff74d7e7d1cc172f3a45adec74fbeee928d71df095b85aaaf66eb84e1e31e6" +dependencies = [ + "base64 0.22.1", + "bitfield", + "bitflags", + "byteorder", + "dirs", + "hex", + "iocuddle", + "lazy_static", + "libc", + "p384", + "rsa", + "sha2", + "static_assertions", + "uuid", + "x509-cert", +] + [[package]] name = "sha2" version = "0.10.9" @@ -5065,7 +5598,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", ] @@ -5108,7 +5641,7 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "sns-treasury-manager" version = "0.9.0" -source = "git+https://github.com/dfinity/ic?rev=release-2025-08-14_03-27-base#1db8f933fdadc81a90e7db2389b081e21263a9b6" +source = "git+https://github.com/dfinity/ic?rev=release-2026-04-02_04-48-base#606cab75d9840e2e1c5ef1ce734a7e6a4f754f0b" dependencies = [ "candid", "derivative", @@ -5185,6 +5718,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "string_cache" version = "0.8.9" @@ -5234,7 +5773,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -5246,7 +5785,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -5268,9 +5807,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -5285,7 +5824,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -5314,7 +5853,7 @@ dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix", + "rustix 1.1.2", "windows-sys 0.61.0", ] @@ -5355,11 +5894,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.16", + "thiserror-impl 2.0.18", ] [[package]] @@ -5370,18 +5909,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -5455,6 +5994,27 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "tls_codec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b" +dependencies = [ + "tls_codec_derive", + "zeroize", +] + +[[package]] +name = "tls_codec_derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "tokio" version = "1.48.0" @@ -5480,7 +6040,19 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", ] [[package]] @@ -5488,6 +6060,9 @@ name = "toml_datetime" version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -5496,6 +6071,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap 2.11.1", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] @@ -5591,6 +6168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ "js-sys", + "serde", "wasm-bindgen", ] @@ -5694,7 +6272,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", "wasm-bindgen-shared", ] @@ -5716,7 +6294,7 @@ checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5805,7 +6383,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -5816,7 +6394,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -6035,6 +6613,18 @@ dependencies = [ "tap", ] +[[package]] +name = "x509-cert" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" +dependencies = [ + "const-oid", + "der", + "spki", + "tls_codec", +] + [[package]] name = "x509-parser" version = "0.16.0" @@ -6059,7 +6649,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", - "rustix", + "rustix 1.1.2", ] [[package]] @@ -6103,7 +6693,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", "synstructure", ] @@ -6124,7 +6714,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -6144,7 +6734,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", "synstructure", ] @@ -6165,7 +6755,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -6198,5 +6788,5 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] diff --git a/Cargo.toml b/Cargo.toml index 69a00d8a19..8c395c031c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,24 +9,24 @@ resolver = "2" version = "2.0.142" [workspace.dependencies] -ic-cdk = "0.17.1" -ic-cdk-timers = "0.11.0" -ic-management-canister-types = "0.4.1" +ic-cdk = "0.19.0" +ic-cdk-timers = "1.0.0" +ic-management-canister-types = "0.5.0" -cycles-minting-canister = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -dfn_candid = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -dfn_protobuf = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -ic-base-types = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -ic-crypto-sha2 = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -ic-ledger-core = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -ic-nervous-system-common = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -ic-nns-common = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -ic-nns-constants = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -ic-nns-governance = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -ic-sns-swap = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -icp-ledger = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -icrc-ledger-types = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } -on_wire = { git = "https://github.com/dfinity/ic", rev = "release-2025-08-14_03-27-base" } +cycles-minting-canister = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +dfn_candid = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +dfn_protobuf = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +ic-base-types = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +ic-crypto-sha2 = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +ic-ledger-core = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +ic-nervous-system-common = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +ic-nns-common = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +ic-nns-constants = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +ic-nns-governance = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +ic-sns-swap = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +icp-ledger = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +icrc-ledger-types = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } +on_wire = { git = "https://github.com/dfinity/ic", rev = "release-2026-04-02_04-48-base" } [profile.release] lto = false diff --git a/config.json b/config.json index 8a7a490248..7f6c51eb85 100644 --- a/config.json +++ b/config.json @@ -112,8 +112,8 @@ "IDL2JSON_VERSION": "0.8.8", "OPTIMIZER_VERSION": "0.3.6", "BINSTALL_VERSION": "1.3.0", - "DIDC_RELEASE": "2024-05-14", - "DIDC_VERSION": "didc 0.4.0", + "DIDC_RELEASE": "2025-12-18", + "DIDC_VERSION": "didc 0.5.4", "POCKETIC_VERSION": "3.0.1", "CARGO_SORT_VERSION": "1.0.9", "SNSDEMO_RELEASE": "release-2026-04-08", diff --git a/rs/backend/Cargo.toml b/rs/backend/Cargo.toml index 2c0cd71374..57904bcbe7 100644 --- a/rs/backend/Cargo.toml +++ b/rs/backend/Cargo.toml @@ -41,7 +41,7 @@ on_wire = { workspace = true } [dev-dependencies] anyhow = "1.0.95" -candid_parser = "0.1.2" +candid_parser = "0.3.0" ic_principal = "0.1.0" maplit = "1.0.2" pretty_assertions = "1.4.0" diff --git a/rs/backend/src/arguments.rs b/rs/backend/src/arguments.rs index 81e81b7f92..4b9248ac93 100644 --- a/rs/backend/src/arguments.rs +++ b/rs/backend/src/arguments.rs @@ -72,7 +72,7 @@ impl CanisterArguments { #[must_use] pub fn with_own_canister_id(mut self) -> Self { self.args - .push(("OWN_CANISTER_ID".to_string(), ic_cdk::api::id().to_string())); + .push(("OWN_CANISTER_ID".to_string(), ic_cdk::api::canister_self().to_string())); self } diff --git a/rs/backend/src/assets.rs b/rs/backend/src/assets.rs index a4a9d71e97..7e32619390 100644 --- a/rs/backend/src/assets.rs +++ b/rs/backend/src/assets.rs @@ -373,7 +373,7 @@ fn make_asset_certificate_header(asset_hashes: &AssetHashes, asset_name: &str) - let mut serializer = serde_cbor::ser::Serializer::new(vec![]); serializer.self_describe().unwrap(); tree.serialize(&mut serializer) - .unwrap_or_else(|e| ic_cdk::api::trap(&format!("failed to serialize a hash tree: {e}"))); + .unwrap_or_else(|e| ic_cdk::api::trap(format!("failed to serialize a hash tree: {e}"))); ( "IC-Certificate".to_string(), format!( @@ -462,7 +462,7 @@ pub fn insert_tar_xz(compressed: Vec) { .to_vec(); let name = String::from_utf8(name_bytes.clone()).unwrap_or_else(|e| { - ic_cdk::api::trap(&format!( + ic_cdk::api::trap(format!( "non-utf8 file name {}: {}", String::from_utf8_lossy(&name_bytes), e @@ -506,7 +506,7 @@ impl StableState for Assets { fn update_root_hash(a: &AssetHashes) { let prefixed_root_hash = &labeled_hash(LABEL_ASSETS, &a.0.root_hash()); - ic_cdk::api::set_certified_data(&prefixed_root_hash[..]); + ic_cdk::api::certified_data_set(&prefixed_root_hash[..]); } #[test] diff --git a/rs/backend/src/canisters/exchange_rate_canister.rs b/rs/backend/src/canisters/exchange_rate_canister.rs index 2a06018b5f..43b28588d0 100644 --- a/rs/backend/src/canisters/exchange_rate_canister.rs +++ b/rs/backend/src/canisters/exchange_rate_canister.rs @@ -101,14 +101,13 @@ mod prod { use ic_nns_constants::EXCHANGE_RATE_CANISTER_ID; pub async fn get_exchange_rate(request: GetExchangeRateRequest) -> Result { - ic_cdk::call::<(GetExchangeRateRequest,), (GetExchangeRateResult,)>( - EXCHANGE_RATE_CANISTER_ID.into(), - "get_exchange_rate", - (request,), - ) - .await - .map(|r: (GetExchangeRateResult,)| r.0) - .map_err(|e| e.1) + ic_cdk::call::Call::unbounded_wait(EXCHANGE_RATE_CANISTER_ID.into(), "get_exchange_rate") + .with_arg(request) + .await + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(GetExchangeRateResult,)>().map_err(Into::into)) + .map(|r| r.0) + .map_err(|e| format!("{e:?}")) } } diff --git a/rs/backend/src/canisters/governance.rs b/rs/backend/src/canisters/governance.rs index 58b7e99aae..153913705c 100644 --- a/rs/backend/src/canisters/governance.rs +++ b/rs/backend/src/canisters/governance.rs @@ -14,10 +14,15 @@ mod prod { use ic_nns_constants::GOVERNANCE_CANISTER_ID; pub async fn get_metrics() -> GetMetricsCallResult { - ic_cdk::call(GOVERNANCE_CANISTER_ID.into(), "get_metrics", ()) + ic_cdk::call::Call::unbounded_wait(GOVERNANCE_CANISTER_ID.into(), "get_metrics") .await - .map(|r: (Result,)| r.0) - .map_err(|e| e.1) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| { + resp.candid_tuple::<(Result,)>() + .map_err(Into::into) + }) + .map(|r| r.0) + .map_err(|e| format!("{e:?}")) } } diff --git a/rs/backend/src/main.rs b/rs/backend/src/main.rs index 9a7e319062..8c5e4819a4 100644 --- a/rs/backend/src/main.rs +++ b/rs/backend/src/main.rs @@ -27,7 +27,6 @@ mod canisters; mod constants; mod metrics_encoder; mod perf; -mod spawn; mod state; mod stats; mod time; @@ -95,7 +94,7 @@ pub fn http_request(req: assets::HttpRequest) -> assets::HttpResponse { } fn get_caller() -> PrincipalId { - let caller = ic_cdk::api::caller(); + let caller = ic_cdk::api::msg_caller(); if caller == candid::Principal::anonymous() { ic_cdk::api::trap("Anonymous principal is not allowed to call this endpoint."); } @@ -288,7 +287,7 @@ pub fn add_stable_asset(asset_bytes: Vec) { insert_asset("/assets/canvaskit/canvaskit.js", Asset::new_stable(asset_bytes)); } unknown_hash => { - ic_cdk::api::trap(&format!("Unknown asset with hash {unknown_hash}")); + ic_cdk::api::trap(format!("Unknown asset with hash {unknown_hash}")); } } } @@ -307,7 +306,7 @@ pub fn add_stable_asset(asset_bytes: Vec) { #[must_use] #[ic_cdk::update] pub fn create_toy_accounts(num_accounts: u128) -> u64 { - let caller = ic_cdk::caller(); + let caller = ic_cdk::api::msg_caller(); if !ic_cdk::api::is_controller(&caller) { ic_cdk::api::trap("Only the controller may generate toy accounts"); } @@ -324,7 +323,7 @@ pub fn create_toy_accounts(num_accounts: u128) -> u64 { #[must_use] #[ic_cdk::query] pub fn get_toy_account(toy_account_index: u64) -> GetAccountResponse { - let caller = ic_cdk::caller(); + let caller = ic_cdk::api::msg_caller(); if !ic_cdk::api::is_controller(&caller) { ic_cdk::api::trap("Only the controller may access toy accounts"); } diff --git a/rs/backend/src/state.rs b/rs/backend/src/state.rs index 4bb330fad4..63e133fedd 100644 --- a/rs/backend/src/state.rs +++ b/rs/backend/src/state.rs @@ -135,7 +135,7 @@ impl State { println!("START state::new_restored: ())"); let bytes = with_partitions(Partitions::read_bytes_from_managed_memory); let state = - State::decode(bytes).unwrap_or_else(|e| trap(&format!("Decoding stable memory failed. Error: {e:?}"))); + State::decode(bytes).unwrap_or_else(|e| trap(format!("Decoding stable memory failed. Error: {e:?}"))); println!("END state::new_restored: ()"); state } diff --git a/rs/backend/src/state/partitions.rs b/rs/backend/src/state/partitions.rs index 0b5fa797cd..0cafd485b7 100644 --- a/rs/backend/src/state/partitions.rs +++ b/rs/backend/src/state/partitions.rs @@ -5,8 +5,8 @@ //! //! This code also stores virtual memory IDs and other memory functions. use core::borrow::Borrow; -use ic_cdk::api::stable::WASM_PAGE_SIZE_IN_BYTES; use ic_cdk::api::trap; +const WASM_PAGE_SIZE_IN_BYTES: u64 = 65536; use ic_stable_structures::memory_manager::{MemoryId, MemoryManager, VirtualMemory}; use ic_stable_structures::{DefaultMemoryImpl, Memory}; use strum::IntoEnumIterator; @@ -93,7 +93,7 @@ impl Partitions { let len = bytes.len(); let length_field = u64::try_from(len) .unwrap_or_else(|e| { - trap(&format!( + trap(format!( "The serialized memory takes more than 2**64 bytes. Amazing: {e:?}" )); }) diff --git a/rs/backend/src/state/partitions/tests.rs b/rs/backend/src/state/partitions/tests.rs index ce2e52d6fc..8f95827a36 100644 --- a/rs/backend/src/state/partitions/tests.rs +++ b/rs/backend/src/state/partitions/tests.rs @@ -1,6 +1,6 @@ //! Tests for stable memory layout code. +use super::WASM_PAGE_SIZE_IN_BYTES; use super::*; -use ic_cdk::api::stable::WASM_PAGE_SIZE_IN_BYTES; use pretty_assertions::assert_eq; use std::rc::Rc; diff --git a/rs/backend/src/stats.rs b/rs/backend/src/stats.rs index 3a36bdb361..f4f7830726 100644 --- a/rs/backend/src/stats.rs +++ b/rs/backend/src/stats.rs @@ -8,9 +8,9 @@ mod tests; #[cfg(target_arch = "wasm32")] use core::arch::wasm32::memory_size as wasm_memory_size; #[cfg(target_arch = "wasm32")] -use ic_cdk::api::stable::stable_size; +use ic_cdk::stable::stable_size; #[cfg(target_arch = "wasm32")] -use ic_cdk::api::stable::WASM_PAGE_SIZE_IN_BYTES; +const WASM_PAGE_SIZE_IN_BYTES: u64 = 65536; const GIBIBYTE: u64 = 1 << 30; /// Returns basic stats for frequent monitoring. diff --git a/rs/backend/src/timer.rs b/rs/backend/src/timer.rs index 1eb1597711..a026048652 100644 --- a/rs/backend/src/timer.rs +++ b/rs/backend/src/timer.rs @@ -9,16 +9,18 @@ pub mod testing { use ic_cdk_timers::TimerId; use slotmap::SlotMap; use std::cell::RefCell; + use std::future::Future; + use std::pin::Pin; use std::time::Duration; pub struct Timer { pub delay: Duration, - pub func: Box, + pub future: Pin>>, } pub struct TimerInterval { pub interval: Duration, - pub func: Box, + pub func: Box Pin>>>, } thread_local! { @@ -26,20 +28,23 @@ pub mod testing { pub static TIMER_INTERVALS: RefCell> = RefCell::default(); } - pub fn set_timer(delay: Duration, func: impl FnOnce() + 'static) -> TimerId { + pub fn set_timer(delay: Duration, future: impl Future + 'static) -> TimerId { TIMERS.with(|timers| { timers.borrow_mut().insert(Timer { delay, - func: Box::new(func), + future: Box::pin(future), }) }) } - pub fn set_timer_interval(interval: Duration, func: impl FnMut() + 'static) -> TimerId { + pub fn set_timer_interval(interval: Duration, mut func: impl FnMut() -> Fut + 'static) -> TimerId + where + Fut: Future + 'static, + { TIMER_INTERVALS.with(|timer_intervals| { timer_intervals.borrow_mut().insert(TimerInterval { interval, - func: Box::new(func), + func: Box::new(move || Box::pin(func()) as Pin>>), }) }) } diff --git a/rs/backend/src/tvl.rs b/rs/backend/src/tvl.rs index aed5743622..0ca965f789 100644 --- a/rs/backend/src/tvl.rs +++ b/rs/backend/src/tvl.rs @@ -1,7 +1,6 @@ use crate::{ canisters::{exchange_rate_canister, governance}, constants::{E8S_PER_UNIT, NANOS_PER_UNIT}, - spawn, state::{with_state, with_state_mut}, time, timer::{set_timer, set_timer_interval}, @@ -31,25 +30,17 @@ pub fn init_timers() { } pub fn start_updating_exchange_rate_in_background() { - set_timer_interval(Duration::from_secs(UPDATE_INTERVAL_SECONDS), || { - spawn::spawn(update_exchange_rate()); - }); + set_timer_interval(Duration::from_secs(UPDATE_INTERVAL_SECONDS), update_exchange_rate); // `set_timer_interval` does not run the callback immediately so we also // call it after 1 second to have an exchange rate available soon. - set_timer(Duration::from_secs(1), || { - spawn::spawn(update_exchange_rate()); - }); + set_timer(Duration::from_secs(1), update_exchange_rate()); } fn start_updating_locked_icp_in_the_background() { - set_timer_interval(Duration::from_secs(UPDATE_INTERVAL_SECONDS), || { - spawn::spawn(update_locked_icp_e8s()); - }); + set_timer_interval(Duration::from_secs(UPDATE_INTERVAL_SECONDS), update_locked_icp_e8s); // `set_timer_interval` does not run the callback immediately so we also // call it after 1 second to have an exchange rate available soon. - set_timer(Duration::from_secs(1), || { - spawn::spawn(update_locked_icp_e8s()); - }); + set_timer(Duration::from_secs(1), update_locked_icp_e8s()); } /// Converts a number such that it can be interpreted as a fixed-point number diff --git a/rs/backend/src/tvl/tests.rs b/rs/backend/src/tvl/tests.rs index 941d5b4955..25c93abcaa 100644 --- a/rs/backend/src/tvl/tests.rs +++ b/rs/backend/src/tvl/tests.rs @@ -1,6 +1,6 @@ use crate::state::{init_state, with_state, with_state_mut}; use crate::timer; -use crate::tvl::{self, exchange_rate_canister, governance, spawn, time}; +use crate::tvl::{self, exchange_rate_canister, governance, time}; use candid::Nat; use lazy_static::lazy_static; @@ -398,13 +398,7 @@ async fn start_updating_exchange_rate_in_background() { timer.delay, std::time::Duration::from_secs(expected_timer_delay_seconds) ); - // The timer calls spawn::spawn, which, during the test, adds the future - // to a queue. - (timer.func)(); - // Make sure the spawned future is run. - let mut spawned_futures = spawn::testing::drain_spawned_futures(); - assert_eq!(spawned_futures.len(), 1); - spawned_futures.pop().unwrap().await; + timer.future.await; } // Step 4: Verify the state after calling the 1-time timer. @@ -442,13 +436,7 @@ async fn start_updating_exchange_rate_in_background() { timer.interval, std::time::Duration::from_secs(expected_timer_interval_seconds) ); - // The timer calls spawn::spawn, which, during the test, adds the future - // to a queue. - (timer.func)(); - // Make sure the spawned future is run. - let mut spawned_futures = spawn::testing::drain_spawned_futures(); - assert_eq!(spawned_futures.len(), 1); - spawned_futures.pop().unwrap().await; + (timer.func)().await; } // Step 4: Verify the state after calling interval timer. @@ -505,13 +493,7 @@ async fn start_updating_locked_icp_in_the_background() { timer.delay, std::time::Duration::from_secs(expected_timer_delay_seconds) ); - // The timer calls spawn::spawn, which, during the test, adds the future - // to a queue. - (timer.func)(); - // Make sure the spawned future is run. - let mut spawned_futures = spawn::testing::drain_spawned_futures(); - assert_eq!(spawned_futures.len(), 1); - spawned_futures.pop().unwrap().await; + timer.future.await; } // Step 4: Verify the state after calling the 1-time timer. @@ -534,13 +516,7 @@ async fn start_updating_locked_icp_in_the_background() { timer.interval, std::time::Duration::from_secs(expected_timer_interval_seconds) ); - // The timer calls spawn::spawn, which, during the test, adds the future - // to a queue. - (timer.func)(); - // Make sure the spawned future is run. - let mut spawned_futures = spawn::testing::drain_spawned_futures(); - assert_eq!(spawned_futures.len(), 1); - spawned_futures.pop().unwrap().await; + (timer.func)().await; } // Step 4: Verify the state after calling interval timer. diff --git a/rs/sns_aggregator/Cargo.toml b/rs/sns_aggregator/Cargo.toml index 0a30895db9..c5be04c9e6 100644 --- a/rs/sns_aggregator/Cargo.toml +++ b/rs/sns_aggregator/Cargo.toml @@ -15,8 +15,8 @@ dfn_candid = { workspace = true } ic-base-types = { workspace = true } # This next candid is 0.9.0_beta code that fixes serde Nat but has other issues. Keep checking until the issues are fixed. #candid = { git = "https://github.com/dfinity/candid" , rev = "42ffed660ded37585c4b9f97e3ce90919e24c518" } -ic-cdk = { version = "0.17.1" } -ic-cdk-timers = "0.11.0" +ic-cdk = { version = "0.19.0" } +ic-cdk-timers = "1.0.0" ic-certified-map = { git = "https://github.com/dfinity/cdk-rs", rev = "58791941b72471e09e3d9e733f2a3d4d54e52b5a" } ic-management-canister-types = { workspace = true } ic-nervous-system-common = { workspace = true } diff --git a/rs/sns_aggregator/src/assets.rs b/rs/sns_aggregator/src/assets.rs index d9c0452f7e..4b750c2e9d 100644 --- a/rs/sns_aggregator/src/assets.rs +++ b/rs/sns_aggregator/src/assets.rs @@ -233,7 +233,7 @@ pub fn insert_asset + Clone>(path: S, asset: Asset) { /// System call to certify the root hash. fn update_root_hash(a: &AssetHashes) { let prefixed_root_hash = &labeled_hash(LABEL_ASSETS, &a.0.root_hash()); - ic_cdk::api::set_certified_data(&prefixed_root_hash[..]); + ic_cdk::api::certified_data_set(&prefixed_root_hash[..]); } /// Responds to an HTTP request for an asset. diff --git a/rs/sns_aggregator/src/fast_scheduler.rs b/rs/sns_aggregator/src/fast_scheduler.rs index c9c4a4c403..5cff8c152a 100644 --- a/rs/sns_aggregator/src/fast_scheduler.rs +++ b/rs/sns_aggregator/src/fast_scheduler.rs @@ -5,7 +5,7 @@ use crate::{ types::{upstream::SnsCache, upstream::SnsIndex, GetStateResponse}, upstream::{get_derived_state, get_lifecycle, get_swap_state}, }; -use ic_cdk::api::management_canister::provisional::CanisterId; +use candid::Principal as CanisterId; use ic_cdk::api::time; use ic_cdk_timers::{clear_timer, set_timer, set_timer_interval, TimerId}; use std::str::FromStr; @@ -170,7 +170,7 @@ impl FastScheduler { /// Start collecting data now. pub fn start(&mut self, timer_interval: Duration) { - let timer_id = set_timer_interval(timer_interval, || ic_cdk::spawn(Self::global_update_next())); + let timer_id = set_timer_interval(timer_interval, Self::global_update_next); let old_timer = self.update_timer.replace(timer_id); if let Some(id) = old_timer { clear_timer(id); @@ -192,7 +192,7 @@ impl FastScheduler { /// Note: We request both the delay and the timestamp to avoid making a syscall for data that /// is almost certainly already available to the caller. pub fn global_start_at(start_seconds: u64, delay: Duration) { - let start_timer = set_timer(delay, Self::global_start); + let start_timer = set_timer(delay, async { Self::global_start() }); if let Some((_, old_timer)) = STATE.with(|state| { state .fast_scheduler diff --git a/rs/sns_aggregator/src/lib.rs b/rs/sns_aggregator/src/lib.rs index 1e5bea7946..72d2f7fa61 100644 --- a/rs/sns_aggregator/src/lib.rs +++ b/rs/sns_aggregator/src/lib.rs @@ -19,8 +19,6 @@ use assets::{insert_favicon, insert_home_page, AssetHashes, HttpRequest, HttpRes use candid::{candid_method, export_service, CandidType, Principal}; use fast_scheduler::FastScheduler; use ic_base_types::CanisterId; -use ic_cdk::api::call::call; -use ic_cdk::api::management_canister::main::CanisterIdRecord; use ic_cdk_timers::{clear_timer, set_timer, set_timer_interval}; use serde::Deserialize; use state::{Config, StableState, STATE}; @@ -87,13 +85,16 @@ struct CanisterStatusResultV2 { #[ic_cdk::update] #[allow(clippy::panic)] // This is a readonly function, only a rather arcane reason prevents it from being a query call. async fn get_canister_status() -> CanisterStatusResultV2 { - let own_canister_id = ic_cdk::api::id(); - let canister_id_record = CanisterIdRecord { + let own_canister_id = ic_cdk::api::canister_self(); + let canister_id_record = ic_cdk::management_canister::CanisterIdRecord { canister_id: own_canister_id, }; - let result = call(IC_00.into(), "canister_status", (canister_id_record,)) + let result = ic_cdk::call::Call::unbounded_wait(IC_00.into(), "canister_status") + .with_arg(canister_id_record) .await + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(CanisterStatusResultV2,)>().map_err(Into::into)) .map(|(r,)| r); result.unwrap_or_else(|err| panic!("Couldn't get canister_status of {own_canister_id}. Err: {err:#?}")) } @@ -126,11 +127,9 @@ fn tail_log(limit: Option) -> String { /// Web server /// -/// Note: we use a decoding quota of 10000 corresponding to roughly 10 KB of decoded data incl. overhead, -/// see the Candid [cost model](https://github.com/dfinity/candid/blob/f324a1686d6f2bd4fba9307a37f8e3f90cc7222b/rust/candid/src/de.rs#L170) -/// for more details. +/// Note: the Candid decoding limit is no longer configurable via the query attribute since ic-cdk 0.19.0. #[candid_method(query)] -#[ic_cdk::query(decoding_quota = 10000)] +#[ic_cdk::query] fn http_request(req: HttpRequest) -> HttpResponse { match req.url.as_ref() { "/__candid" => HttpResponse::from(__export_service()), @@ -244,7 +243,7 @@ fn setup(config: Option) { let timer_interval = Duration::from_millis(STATE.with(|s| s.stable.borrow().config.borrow().update_interval_ms)); crate::state::log(format!("Set interval to {}", &timer_interval.as_millis())); STATE.with(|state| { - let timer_id = set_timer_interval(timer_interval, || ic_cdk::spawn(crate::upstream::update_cache())); + let timer_id = set_timer_interval(timer_interval, crate::upstream::update_cache); let old_timer = state.timer_id.replace_with(|_| Some(timer_id)); if let Some(id) = old_timer { clear_timer(id); @@ -259,9 +258,7 @@ fn setup(config: Option) { // Getting a list of SNSs typically takes two block heights, so a 4 second delay between // the calls will cover all but the most extremely slow networks. for i in 0..2 { - set_timer(Duration::from_secs(i * 4), || { - ic_cdk::spawn(crate::upstream::update_cache()); - }); + set_timer(Duration::from_secs(i * 4), crate::upstream::update_cache()); } } diff --git a/rs/sns_aggregator/src/state.rs b/rs/sns_aggregator/src/state.rs index e41510ae7f..00ac17e23a 100644 --- a/rs/sns_aggregator/src/state.rs +++ b/rs/sns_aggregator/src/state.rs @@ -12,7 +12,7 @@ use crate::{ types::upstream::SnsCache, }; use anyhow::anyhow; -use ic_cdk::api::management_canister::provisional::CanisterId; +use candid::Principal as CanisterId; use ic_cdk::api::time; use ic_cdk_timers::TimerId; use std::cell::RefCell; diff --git a/rs/sns_aggregator/src/types/ic_sns_governance.rs b/rs/sns_aggregator/src/types/ic_sns_governance.rs index b26916ddbb..bc96ac61e6 100644 --- a/rs/sns_aggregator/src/types/ic_sns_governance.rs +++ b/rs/sns_aggregator/src/types/ic_sns_governance.rs @@ -1,6 +1,7 @@ //! Rust code created from candid by: `scripts/did2rs.sh --canister sns_governance --out ic_sns_governance.rs --header did2rs.header --traits Serialize\,\ Clone\,\ Debug` //! Candid for canister `sns_governance` obtained by `scripts/update_ic_commit` from: #![allow(clippy::all)] +#![allow(deprecated)] #![allow(unused_imports)] #![allow(missing_docs)] #![allow(clippy::missing_docs_in_private_items)] diff --git a/rs/sns_aggregator/src/types/ic_sns_ledger.rs b/rs/sns_aggregator/src/types/ic_sns_ledger.rs index 8d2a50c6bd..133bb69855 100644 --- a/rs/sns_aggregator/src/types/ic_sns_ledger.rs +++ b/rs/sns_aggregator/src/types/ic_sns_ledger.rs @@ -1,6 +1,7 @@ //! Rust code created from candid by: `scripts/did2rs.sh --canister sns_ledger --out ic_sns_ledger.rs --header did2rs.header --traits Serialize\,\ Clone\,\ Debug` //! Candid for canister `sns_ledger` obtained by `scripts/update_ic_commit` from: #![allow(clippy::all)] +#![allow(deprecated)] #![allow(unused_imports)] #![allow(missing_docs)] #![allow(clippy::missing_docs_in_private_items)] diff --git a/rs/sns_aggregator/src/types/ic_sns_root.rs b/rs/sns_aggregator/src/types/ic_sns_root.rs index c077c40b83..4d9ae9c4f8 100644 --- a/rs/sns_aggregator/src/types/ic_sns_root.rs +++ b/rs/sns_aggregator/src/types/ic_sns_root.rs @@ -1,6 +1,7 @@ //! Rust code created from candid by: `scripts/did2rs.sh --canister sns_root --out ic_sns_root.rs --header did2rs.header --traits Serialize\,\ Clone\,\ Debug` //! Candid for canister `sns_root` obtained by `scripts/update_ic_commit` from: #![allow(clippy::all)] +#![allow(deprecated)] #![allow(unused_imports)] #![allow(missing_docs)] #![allow(clippy::missing_docs_in_private_items)] diff --git a/rs/sns_aggregator/src/types/ic_sns_swap.rs b/rs/sns_aggregator/src/types/ic_sns_swap.rs index 095d631d95..2946d5bea4 100644 --- a/rs/sns_aggregator/src/types/ic_sns_swap.rs +++ b/rs/sns_aggregator/src/types/ic_sns_swap.rs @@ -1,6 +1,7 @@ //! Rust code created from candid by: `scripts/did2rs.sh --canister sns_swap --out ic_sns_swap.rs --header did2rs.header --traits Serialize\,\ Clone\,\ Debug` //! Candid for canister `sns_swap` obtained by `scripts/update_ic_commit` from: #![allow(clippy::all)] +#![allow(deprecated)] #![allow(unused_imports)] #![allow(missing_docs)] #![allow(clippy::missing_docs_in_private_items)] diff --git a/rs/sns_aggregator/src/types/ic_sns_wasm.rs b/rs/sns_aggregator/src/types/ic_sns_wasm.rs index 79e46efa8e..0bc66db3ce 100644 --- a/rs/sns_aggregator/src/types/ic_sns_wasm.rs +++ b/rs/sns_aggregator/src/types/ic_sns_wasm.rs @@ -1,6 +1,7 @@ //! Rust code created from candid by: `scripts/did2rs.sh --canister sns_wasm --out ic_sns_wasm.rs --header did2rs.header --traits Serialize\,\ Clone\,\ Debug` //! Candid for canister `sns_wasm` obtained by `scripts/update_ic_commit` from: #![allow(clippy::all)] +#![allow(deprecated)] #![allow(unused_imports)] #![allow(missing_docs)] #![allow(clippy::missing_docs_in_private_items)] diff --git a/rs/sns_aggregator/src/types/upstream.rs b/rs/sns_aggregator/src/types/upstream.rs index d77e4f16d6..2966af14d7 100644 --- a/rs/sns_aggregator/src/types/upstream.rs +++ b/rs/sns_aggregator/src/types/upstream.rs @@ -10,7 +10,7 @@ use super::{CandidType, Deserialize}; use crate::types::ic_sns_governance::{GetMetricsResponse, RewardEvent}; use crate::types::ic_sns_swap::{GetDerivedStateResponse, GetInitResponse, GetLifecycleResponse}; use candid::Nat; -use ic_cdk::api::management_canister::provisional::CanisterId; +use candid::Principal as CanisterId; use serde::Serialize; use std::collections::BTreeMap; diff --git a/rs/sns_aggregator/src/upstream.rs b/rs/sns_aggregator/src/upstream.rs index 032a018eb1..b75746c8a2 100644 --- a/rs/sns_aggregator/src/upstream.rs +++ b/rs/sns_aggregator/src/upstream.rs @@ -13,7 +13,9 @@ use crate::types::upstream::UpstreamData; use crate::types::{self, EmptyRecord, GetMetricsRequest, GetStateResponse, Icrc1Value, SnsTokens}; use anyhow::anyhow; use candid::Principal; -use ic_cdk::api::{call::RejectionCode, management_canister::provisional::CanisterId, time}; +use candid::Principal as CanisterId; +use ic_cdk::api::time; +use ic_cdk::call::CallResult; /// default time window to get SNS metrics is 2 months. const TIME_WINDOW_SECONDS: u64 = 2 * 30 * 24 * 3600; @@ -46,8 +48,8 @@ pub async fn update_cache() { /// /// This canister contains a list of all SNS root canisters it has created. #[allow(clippy::expect_used)] -fn nns_sns_wasm_canister_id() -> CanisterId { - CanisterId::from_text("qaa6y-5yaaa-aaaaa-aaafa-cai").expect("I don't believe it's not a valid canister ID??!") +fn nns_sns_wasm_canister_id() -> Principal { + Principal::from_text("qaa6y-5yaaa-aaaaa-aaafa-cai").expect("I don't believe it's not a valid canister ID??!") } /// Gets a list of SNSs from the nns-sns-wasm canister and puts it in the queue of SNSs to query. @@ -55,11 +57,16 @@ fn nns_sns_wasm_canister_id() -> CanisterId { /// Note: We can improve on this by filtering out SNSs that have stopped changing. async fn set_list_of_sns_to_get() -> anyhow::Result<()> { crate::state::log("Asking for more SNSs".to_string()); - let result: Result<(ListDeployedSnsesResponse,), (RejectionCode, std::string::String)> = - ic_cdk::api::call::call(nns_sns_wasm_canister_id(), "list_deployed_snses", (EmptyRecord {},)).await; + let result: CallResult<(ListDeployedSnsesResponse,)> = + ic_cdk::call::Call::unbounded_wait(nns_sns_wasm_canister_id(), "list_deployed_snses") + .with_arg(EmptyRecord {}) + .await + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(ListDeployedSnsesResponse,)>().map_err(Into::into)); crate::state::log("Asked for more SNSs".to_string()); match result { - Err((_rejection_code, message)) => { + Err(err) => { + let message = format!("{err:?}"); crate::state::log(format!("Cache update failed: {message}")); Err(anyhow!("Cache update failed: {}", message)) } @@ -105,25 +112,38 @@ async fn get_sns_data(index: u64, sns_canister_ids: DeployedSns) -> anyhow::Resu crate::state::log(format!("Getting SNS index {index}... list_sns_canisters")); let list_sns_canisters: types::ListSnsCanistersResponse = - ic_cdk::api::call::call(root_canister_id, "list_sns_canisters", (types::EmptyRecord {},)) + ic_cdk::call::Call::unbounded_wait(root_canister_id, "list_sns_canisters") + .with_arg(types::EmptyRecord {}) .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| { + resp.candid_tuple::<(types::ListSnsCanistersResponse,)>() + .map_err(Into::into) + }) + .map(|(r,)| r) .map_err(|err| crate::state::log(format!("Call to Root.list_sns_canisters failed: {err:?}"))) .unwrap_or(existing_data.list_sns_canisters); crate::state::log(format!("Getting SNS index {index}... get_metadata")); - let meta: types::GetMetadataResponse = - ic_cdk::api::call::call(governance_canister_id, "get_metadata", (types::EmptyRecord {},)) - .await - .map(|response: (_,)| response.0) - .map_err(|err| crate::state::log(format!("Call to SnsGovernance.get_metadata failed: {err:?}"))) - .unwrap_or(existing_data.meta); + let meta: types::GetMetadataResponse = ic_cdk::call::Call::unbounded_wait(governance_canister_id, "get_metadata") + .with_arg(types::EmptyRecord {}) + .await + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(types::GetMetadataResponse,)>().map_err(Into::into)) + .map(|(r,)| r) + .map_err(|err| crate::state::log(format!("Call to SnsGovernance.get_metadata failed: {err:?}"))) + .unwrap_or(existing_data.meta); crate::state::log(format!("Getting SNS index {index}... list_nervous_system_functions")); let parameters: types::ListNervousSystemFunctionsResponse = - ic_cdk::api::call::call(governance_canister_id, "list_nervous_system_functions", ((),)) + ic_cdk::call::Call::unbounded_wait(governance_canister_id, "list_nervous_system_functions") .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| { + resp.candid_tuple::<(types::ListNervousSystemFunctionsResponse,)>() + .map_err(Into::into) + }) + .map(|(r,)| r) .map_err(|err| { crate::state::log(format!( "Call to SnsGovernance.list_nervous_system_functions failed: {err:?}" @@ -135,9 +155,12 @@ async fn get_sns_data(index: u64, sns_canister_ids: DeployedSns) -> anyhow::Resu let arg: types::GetMetricsRequest = GetMetricsRequest { time_window_seconds: Some(TIME_WINDOW_SECONDS), }; - let metrics = ic_cdk::api::call::call(governance_canister_id, "get_metrics_replicated", (arg,)) + let metrics = ic_cdk::call::Call::unbounded_wait(governance_canister_id, "get_metrics_replicated") + .with_arg(arg) .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(Option<_>,)>().map_err(Into::into)) + .map(|(r,)| r) .map_err(|err| { crate::state::log(format!("Call to SnsGovernance.get_metrics_replicated failed: {err:?}")); }) @@ -158,29 +181,38 @@ async fn get_sns_data(index: u64, sns_canister_ids: DeployedSns) -> anyhow::Resu crate::state::log(format!("Getting SNS index {index}... icrc1_metadata")); let icrc1_metadata: Vec<(String, Icrc1Value)> = - ic_cdk::api::call::call(ledger_canister_id, "icrc1_metadata", ((),)) + ic_cdk::call::Call::unbounded_wait(ledger_canister_id, "icrc1_metadata") .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(Vec<(String, Icrc1Value)>,)>().map_err(Into::into)) + .map(|(r,)| r) .map_err(|err| crate::state::log(format!("Call to Ledger.icrc1_metadata failed: {err:?}"))) .unwrap_or(existing_data.icrc1_metadata); crate::state::log(format!("Getting SNS index {index}... icrc1_fee")); - let icrc1_fee: SnsTokens = ic_cdk::api::call::call(ledger_canister_id, "icrc1_fee", ((),)) + let icrc1_fee: SnsTokens = ic_cdk::call::Call::unbounded_wait(ledger_canister_id, "icrc1_fee") .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(SnsTokens,)>().map_err(Into::into)) + .map(|(r,)| r) .map_err(|err| crate::state::log(format!("Call to Ledger.icrc1_fee failed: {err:?}"))) .unwrap_or(existing_data.icrc1_fee); - let icrc1_total_supply: SnsTokens = ic_cdk::api::call::call(ledger_canister_id, "icrc1_total_supply", ((),)) + let icrc1_total_supply: SnsTokens = ic_cdk::call::Call::unbounded_wait(ledger_canister_id, "icrc1_total_supply") .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(SnsTokens,)>().map_err(Into::into)) + .map(|(r,)| r) .map_err(|err| crate::state::log(format!("Call to Ledger.icrc1_total_supply failed: {err:?}"))) .unwrap_or(existing_data.icrc1_total_supply); let swap_params_response: Option = - match ic_cdk::api::call::call(swap_canister_id, "get_sale_parameters", (EmptyRecord {},)) + match ic_cdk::call::Call::unbounded_wait(swap_canister_id, "get_sale_parameters") + .with_arg(EmptyRecord {}) .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(GetSaleParametersResponse,)>().map_err(Into::into)) + .map(|(r,)| r) { Err(err) => { crate::state::log(format!("Call to Swap.get_sale_parameters failed: {err:?}")); @@ -190,18 +222,20 @@ async fn get_sns_data(index: u64, sns_canister_ids: DeployedSns) -> anyhow::Resu } .or(existing_data.swap_params); - let init_response: Option = - match ic_cdk::api::call::call(swap_canister_id, "get_init", (EmptyRecord {},)) - .await - .map(|response: (_,)| response.0) - { - Err(err) => { - crate::state::log(format!("Call to Swap.get_init failed: {err:?}")); - None - } - Ok(response) => Some(response), + let init_response: Option = match ic_cdk::call::Call::unbounded_wait(swap_canister_id, "get_init") + .with_arg(EmptyRecord {}) + .await + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(GetInitResponse,)>().map_err(Into::into)) + .map(|(r,)| r) + { + Err(err) => { + crate::state::log(format!("Call to Swap.get_init failed: {err:?}")); + None } - .or(existing_data.init); + Ok(response) => Some(response), + } + .or(existing_data.init); let derived_state_response: Option = get_derived_state(swap_canister_id) .await @@ -266,42 +300,49 @@ async fn get_sns_data(index: u64, sns_canister_ids: DeployedSns) -> anyhow::Resu /// Gets the state of the swap. /// /// Note: This API is deprecated but must not be removed until the NNS-dapp UI is updated. -pub async fn get_swap_state(swap_canister_id: Principal) -> Result { - ic_cdk::api::call::call(swap_canister_id, "get_state", (EmptyRecord {},)) +pub async fn get_swap_state(swap_canister_id: Principal) -> CallResult { + ic_cdk::call::Call::unbounded_wait(swap_canister_id, "get_state") + .with_arg(EmptyRecord {}) .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(GetStateResponse,)>().map_err(Into::into)) + .map(|(r,)| r) } /// Gets the derived state of the swap canister; this is a small subset of the state with headline values such as number of participants. -pub async fn get_derived_state( - swap_canister_id: Principal, -) -> Result { - ic_cdk::api::call::call(swap_canister_id, "get_derived_state", (EmptyRecord {},)) +pub async fn get_derived_state(swap_canister_id: Principal) -> CallResult { + ic_cdk::call::Call::unbounded_wait(swap_canister_id, "get_derived_state") + .with_arg(EmptyRecord {}) .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(GetDerivedStateResponse,)>().map_err(Into::into)) + .map(|(r,)| r) } /// Gets the current lifecycle of an SNS. -pub async fn get_lifecycle(swap_canister_id: Principal) -> Result { - ic_cdk::api::call::call(swap_canister_id, "get_lifecycle", (EmptyRecord {},)) +pub async fn get_lifecycle(swap_canister_id: Principal) -> CallResult { + ic_cdk::call::Call::unbounded_wait(swap_canister_id, "get_lifecycle") + .with_arg(EmptyRecord {}) .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(GetLifecycleResponse,)>().map_err(Into::into)) + .map(|(r,)| r) } /// Gets the SNS nervous system parameters. -pub async fn get_nervous_system_parameters( - governance_canister_id: Principal, -) -> Result { - ic_cdk::api::call::call(governance_canister_id, "get_nervous_system_parameters", ()) +pub async fn get_nervous_system_parameters(governance_canister_id: Principal) -> CallResult { + ic_cdk::call::Call::unbounded_wait(governance_canister_id, "get_nervous_system_parameters") .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(NervousSystemParameters,)>().map_err(Into::into)) + .map(|(r,)| r) } /// Gets the latest voting reward distribution data. -pub async fn get_latest_reward_event( - governance_canister_id: Principal, -) -> Result { - ic_cdk::call(governance_canister_id, "get_latest_reward_event", ()) +pub async fn get_latest_reward_event(governance_canister_id: Principal) -> CallResult { + ic_cdk::call::Call::unbounded_wait(governance_canister_id, "get_latest_reward_event") .await - .map(|response: (_,)| response.0) + .map_err(ic_cdk::call::Error::from) + .and_then(|resp| resp.candid_tuple::<(sns_gov::RewardEvent,)>().map_err(Into::into)) + .map(|(r,)| r) } diff --git a/scripts/sns/aggregator/did2rs.header b/scripts/sns/aggregator/did2rs.header index a424c34e92..82fba7b58c 100644 --- a/scripts/sns/aggregator/did2rs.header +++ b/scripts/sns/aggregator/did2rs.header @@ -1,4 +1,5 @@ #![allow(clippy::all)] +#![allow(deprecated)] #![allow(unused_imports)] #![allow(missing_docs)] #![allow(clippy::missing_docs_in_private_items)]