diff --git a/Cargo.lock b/Cargo.lock index cedc971f8a..c08580682f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,8 +79,8 @@ dependencies = [ "candid_parser", "canister_tests", "hex", - "ic-cdk", - "ic-cdk-macros", + "ic-cdk 0.13.3", + "ic-cdk-macros 0.13.3", "ic-cdk-timers", "ic-metrics-encoder", "ic-stable-structures 0.6.4", @@ -124,8 +124,8 @@ version = "0.1.0" dependencies = [ "base64 0.21.5", "candid", - "ic-cdk", - "ic-cdk-macros", + "ic-cdk 0.13.3", + "ic-cdk-macros 0.13.3", "ic-certification 2.2.0", "ic-representation-independent-hash", "include_dir", @@ -416,7 +416,7 @@ dependencies = [ "assert_matches", "candid", "hex", - "ic-cdk", + "ic-cdk 0.13.3", "ic-certification 2.2.0", "ic-representation-independent-hash", "lazy_static", @@ -435,7 +435,7 @@ dependencies = [ "candid", "flate2", "hex", - "ic-cdk", + "ic-cdk 0.13.3", "ic-representation-independent-hash", "ic-test-state-machine-client", "identity_jose", @@ -1399,8 +1399,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4ec8231f413b8a4d74b99d7df26d6e917d6528a6245abde27f251210dcf9b72" dependencies = [ "candid", - "ic-cdk-macros", - "ic0", + "ic-cdk-macros 0.8.3", + "ic0 0.21.1", + "serde", + "serde_bytes", +] + +[[package]] +name = "ic-cdk" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6a471aa6c3bdcce8353c1c63ab2bc1de03b9f4901a3ed6b5d5bce23c92d028e" +dependencies = [ + "candid", + "ic-cdk-macros 0.13.3", + "ic0 0.23.0", "serde", "serde_bytes", ] @@ -1415,19 +1428,33 @@ dependencies = [ "proc-macro2", "quote", "serde", - "serde_tokenstream", + "serde_tokenstream 0.1.7", "syn 1.0.109", ] +[[package]] +name = "ic-cdk-macros" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2a7d0338dbd29d63df3445402dc9cd792d2f65ceccf36d4f9a88529ca2b62d" +dependencies = [ + "candid", + "proc-macro2", + "quote", + "serde", + "serde_tokenstream 0.2.0", + "syn 2.0.39", +] + [[package]] name = "ic-cdk-timers" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c43b9706fef3ad10c4192a14801d16bd9539068239f0f06f257857441364329" +checksum = "054727a3a1c486528b96349817d54290ff70df6addf417def456ea708a16f7fb" dependencies = [ "futures", - "ic-cdk", - "ic0", + "ic-cdk 0.13.3", + "ic0 0.21.1", "serde", "serde_bytes", "slotmap", @@ -2016,6 +2043,12 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a54b5297861c651551676e8c43df805dad175cc33bc97dbd992edbbb85dcbcdf" +[[package]] +name = "ic0" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de254dd67bbd58073e23dc1c8553ba12fa1dc610a19de94ad2bbcd0460c067f" + [[package]] name = "ic_bls12_381" version = "0.8.0" @@ -2056,7 +2089,7 @@ name = "identity_core" version = "0.7.0-alpha.6" source = "git+https://github.com/frederikrothenberger/identity.rs.git?branch=frederik/wasm-test#be73e6db80562e432e30dc8fcaba0c4f9561d4ed" dependencies = [ - "ic-cdk", + "ic-cdk 0.12.0", "iota-crypto", "multibase", "serde", @@ -2223,8 +2256,8 @@ dependencies = [ "getrandom 0.2.11", "hex", "hex-literal", - "ic-cdk", - "ic-cdk-macros", + "ic-cdk 0.13.3", + "ic-cdk-macros 0.13.3", "ic-cdk-timers", "ic-certification 2.2.0", "ic-http-certification", @@ -2254,7 +2287,7 @@ name = "internet_identity_interface" version = "0.1.0" dependencies = [ "candid", - "ic-cdk", + "ic-cdk 0.13.3", "serde", "serde_bytes", ] @@ -3217,6 +3250,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "serde_tokenstream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a00ffd23fd882d096f09fcaae2a9de8329a328628e86027e049ee051dc1621f" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn 2.0.39", +] + [[package]] name = "serde_with" version = "1.14.0" diff --git a/Cargo.toml b/Cargo.toml index 6710ac5a50..e7891f79b2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,9 +29,9 @@ vc_util = { path = "src/vc_util" } # ic dependencies candid = "0.10" candid_parser = "0.1.2" -ic-cdk = "0.12" -ic-cdk-macros = "0.8" -ic-cdk-timers = "0.6" +ic-cdk = "0.13" +ic-cdk-macros = "0.13" +ic-cdk-timers = "0.7" ic-certification = "2.2" ic-http-certification = "2.2" ic-metrics-encoder = "1" diff --git a/demos/test-app/Cargo.lock b/demos/test-app/Cargo.lock index efdae7ee2e..f79ca74af4 100644 --- a/demos/test-app/Cargo.lock +++ b/demos/test-app/Cargo.lock @@ -84,9 +84,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "candid" -version = "0.10.2" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39be580be172631a35cac2fc6c765f365709de459edb88121b3e7a80cce6c1ec" +checksum = "dd5902d37352dffd8bd9177a2daa6444ce3cd0279c91763fb0171c053aa04335" dependencies = [ "anyhow", "binread", @@ -107,9 +107,9 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970c220da8aa2fa6f7ef5dbbf3ea5b620a59eb3ac107cfb95ae8c6eebdfb7a08" +checksum = "3de398570c386726e7a59d9887b68763c481477f9a043fb998a2e09d428df1a9" dependencies = [ "lazy_static", "proc-macro2", @@ -203,9 +203,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "ic-cdk" -version = "0.12.0" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ec8231f413b8a4d74b99d7df26d6e917d6528a6245abde27f251210dcf9b72" +checksum = "b6a471aa6c3bdcce8353c1c63ab2bc1de03b9f4901a3ed6b5d5bce23c92d028e" dependencies = [ "candid", "ic-cdk-macros", @@ -216,16 +216,16 @@ dependencies = [ [[package]] name = "ic-cdk-macros" -version = "0.8.3" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff30a6ddb3b50f1b7df689d203d2135b037706678368b1d73a9a98e17f87a9b4" +checksum = "7b2a7d0338dbd29d63df3445402dc9cd792d2f65ceccf36d4f9a88529ca2b62d" dependencies = [ "candid", "proc-macro2", "quote", "serde", "serde_tokenstream", - "syn 1.0.109", + "syn 2.0.16", ] [[package]] @@ -252,9 +252,9 @@ dependencies = [ [[package]] name = "ic0" -version = "0.21.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a54b5297861c651551676e8c43df805dad175cc33bc97dbd992edbbb85dcbcdf" +checksum = "8de254dd67bbd58073e23dc1c8553ba12fa1dc610a19de94ad2bbcd0460c067f" [[package]] name = "ic_principal" @@ -438,13 +438,14 @@ dependencies = [ [[package]] name = "serde_tokenstream" -version = "0.1.7" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "797ba1d80299b264f3aac68ab5d12e5825a561749db4df7cd7c8083900c5d4e9" +checksum = "8a00ffd23fd882d096f09fcaae2a9de8329a328628e86027e049ee051dc1621f" dependencies = [ "proc-macro2", + "quote", "serde", - "syn 1.0.109", + "syn 2.0.16", ] [[package]] diff --git a/demos/test-app/Cargo.toml b/demos/test-app/Cargo.toml index 25c0b40e5e..eba2f83db2 100644 --- a/demos/test-app/Cargo.toml +++ b/demos/test-app/Cargo.toml @@ -14,8 +14,8 @@ crate-type = ["cdylib"] [dependencies] asset_util = { path = "../../src/asset_util" } candid = "0.10" -ic-cdk = "0.12" -ic-cdk-macros = "0.8" +ic-cdk = "0.13" +ic-cdk-macros = "0.13" serde = "1" serde_bytes = "0.11" include_dir = "0.7" diff --git a/demos/vc_issuer/Cargo.lock b/demos/vc_issuer/Cargo.lock index a178ae323c..d2af1d7472 100644 --- a/demos/vc_issuer/Cargo.lock +++ b/demos/vc_issuer/Cargo.lock @@ -103,8 +103,8 @@ version = "0.1.0" dependencies = [ "base64 0.21.4", "candid", - "ic-cdk", - "ic-cdk-macros", + "ic-cdk 0.13.3", + "ic-cdk-macros 0.13.3", "ic-certification 2.2.0", "ic-representation-independent-hash", "include_dir", @@ -330,9 +330,9 @@ checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" [[package]] name = "candid" -version = "0.10.2" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39be580be172631a35cac2fc6c765f365709de459edb88121b3e7a80cce6c1ec" +checksum = "dd5902d37352dffd8bd9177a2daa6444ce3cd0279c91763fb0171c053aa04335" dependencies = [ "anyhow", "binread", @@ -353,9 +353,9 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970c220da8aa2fa6f7ef5dbbf3ea5b620a59eb3ac107cfb95ae8c6eebdfb7a08" +checksum = "3de398570c386726e7a59d9887b68763c481477f9a043fb998a2e09d428df1a9" dependencies = [ "lazy_static", "proc-macro2", @@ -388,7 +388,7 @@ version = "0.1.0" dependencies = [ "candid", "hex", - "ic-cdk", + "ic-cdk 0.13.3", "ic-certification 2.2.0", "ic-representation-independent-hash", "lazy_static", @@ -406,7 +406,7 @@ dependencies = [ "candid", "flate2", "hex", - "ic-cdk", + "ic-cdk 0.13.3", "ic-representation-independent-hash", "ic-test-state-machine-client", "identity_jose", @@ -1219,8 +1219,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4ec8231f413b8a4d74b99d7df26d6e917d6528a6245abde27f251210dcf9b72" dependencies = [ "candid", - "ic-cdk-macros", - "ic0", + "ic-cdk-macros 0.8.3", + "ic0 0.21.1", + "serde", + "serde_bytes", +] + +[[package]] +name = "ic-cdk" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6a471aa6c3bdcce8353c1c63ab2bc1de03b9f4901a3ed6b5d5bce23c92d028e" +dependencies = [ + "candid", + "ic-cdk-macros 0.13.3", + "ic0 0.23.0", "serde", "serde_bytes", ] @@ -1235,10 +1248,24 @@ dependencies = [ "proc-macro2", "quote", "serde", - "serde_tokenstream", + "serde_tokenstream 0.1.7", "syn 1.0.109", ] +[[package]] +name = "ic-cdk-macros" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2a7d0338dbd29d63df3445402dc9cd792d2f65ceccf36d4f9a88529ca2b62d" +dependencies = [ + "candid", + "proc-macro2", + "quote", + "serde", + "serde_tokenstream 0.2.0", + "syn 2.0.38", +] + [[package]] name = "ic-certificate-verification" version = "2.2.0" @@ -1813,6 +1840,12 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a54b5297861c651551676e8c43df805dad175cc33bc97dbd992edbbb85dcbcdf" +[[package]] +name = "ic0" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de254dd67bbd58073e23dc1c8553ba12fa1dc610a19de94ad2bbcd0460c067f" + [[package]] name = "ic_bls12_381" version = "0.8.0" @@ -1853,7 +1886,7 @@ name = "identity_core" version = "0.7.0-alpha.6" source = "git+https://github.com/frederikrothenberger/identity.rs.git?branch=frederik/wasm-test#be73e6db80562e432e30dc8fcaba0c4f9561d4ed" dependencies = [ - "ic-cdk", + "ic-cdk 0.12.0", "iota-crypto", "multibase", "serde", @@ -1997,7 +2030,7 @@ name = "internet_identity_interface" version = "0.1.0" dependencies = [ "candid", - "ic-cdk", + "ic-cdk 0.13.3", "serde", "serde_bytes", ] @@ -2904,6 +2937,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "serde_tokenstream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a00ffd23fd882d096f09fcaae2a9de8329a328628e86027e049ee051dc1621f" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn 2.0.38", +] + [[package]] name = "serde_with" version = "1.14.0" @@ -3346,8 +3391,8 @@ dependencies = [ "canister_sig_util", "canister_tests", "hex", - "ic-cdk", - "ic-cdk-macros", + "ic-cdk 0.13.3", + "ic-cdk-macros 0.13.3", "ic-certification 2.2.0", "ic-http-certification", "ic-response-verification", diff --git a/demos/vc_issuer/Cargo.toml b/demos/vc_issuer/Cargo.toml index 5a2bc759dc..c5dc67a73b 100644 --- a/demos/vc_issuer/Cargo.toml +++ b/demos/vc_issuer/Cargo.toml @@ -14,8 +14,8 @@ vc_util = { path = "../../src/vc_util" } asset_util = { path = "../../src/asset_util" } # ic dependencies candid = "0.10" -ic-cdk = "0.12" -ic-cdk-macros = "0.8" +ic-cdk = "0.13" +ic-cdk-macros = "0.13" ic-certification = "2.2" ic-stable-structures = "0.6.0" diff --git a/src/archive/src/main.rs b/src/archive/src/main.rs index ee891394ae..d26a321a3a 100644 --- a/src/archive/src/main.rs +++ b/src/archive/src/main.rs @@ -669,9 +669,24 @@ fn encode_metrics(w: &mut MetricsEncoder>) -> std::io::Result<()> { #[candid_method] async fn status() -> ArchiveStatus { let canister_id = id(); - let (canister_status,) = canister_status(CanisterIdRecord { canister_id }) + let (ic_cdk_canister_status,) = canister_status(CanisterIdRecord { canister_id }) .await .expect("failed to retrieve canister status"); + let canister_settings = DefiniteCanisterSettings { + controllers: ic_cdk_canister_status.settings.controllers, + compute_allocation: ic_cdk_canister_status.settings.compute_allocation, + memory_allocation: ic_cdk_canister_status.settings.memory_allocation, + freezing_threshold: ic_cdk_canister_status.settings.freezing_threshold, + }; + let canister_status = CanisterStatus { + status: ic_cdk_canister_status.status, + settings: canister_settings, + module_hash: ic_cdk_canister_status.module_hash, + memory_size: ic_cdk_canister_status.memory_size, + cycles: ic_cdk_canister_status.cycles, + idle_cycles_burned_per_day: ic_cdk_canister_status.idle_cycles_burned_per_day, + query_stats: ic_cdk_canister_status.query_stats, + }; let config = with_config(|config| ArchiveInit { ii_canister: config.ii_canister, max_entries_per_call: config.max_entries_per_call, diff --git a/src/internet_identity/src/archive.rs b/src/internet_identity/src/archive.rs index b0caaefbca..0ca22c790d 100644 --- a/src/internet_identity/src/archive.rs +++ b/src/internet_identity/src/archive.rs @@ -122,7 +122,7 @@ pub async fn deploy_archive(wasm: ByteBuf) -> DeployArchiveResult { let status = archive_status(data.archive_canister).await; match status.canister_status.module_hash { None => (data.archive_canister, Install), - Some(_) => (data.archive_canister, Upgrade), + Some(_) => (data.archive_canister, Upgrade(None)), } } }; diff --git a/src/internet_identity_interface/src/archive/types.rs b/src/internet_identity_interface/src/archive/types.rs index 54b9b287fb..814de31214 100644 --- a/src/internet_identity_interface/src/archive/types.rs +++ b/src/internet_identity_interface/src/archive/types.rs @@ -1,8 +1,9 @@ use crate::internet_identity::types::{ AnchorNumber, CredentialId, DeviceKey, DeviceProtection, KeyType, PublicKey, Purpose, Timestamp, }; -use candid::{CandidType, Deserialize, Principal}; -use ic_cdk::api::management_canister::main::CanisterStatusResponse; +use candid::{CandidType, Deserialize, Nat, Principal}; +use ic_cdk::api::management_canister::main::{CanisterStatusType, QueryStats}; +use serde::Serialize; use serde_bytes::ByteBuf; #[derive(Eq, PartialEq, Clone, Debug, CandidType, Deserialize)] @@ -118,12 +119,48 @@ pub struct BufferedEntry { pub sequence_number: u64, } +// Copies of `DefiniteCanisterSettings` resp. `CanisterStatusResponse` from ic-cdk v0.12, as v.0.13 has introduced +// new fields (cf. https://github.com/dfinity/cdk-rs/blob/main/src/ic-cdk/CHANGELOG.md#changed-3), +// and this leads to Candid incompatibility in `ArchiveStatus` returned by `status()-function. +#[derive( + CandidType, Serialize, Deserialize, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Default, +)] +pub struct DefiniteCanisterSettings { + /// Controllers of the canister. + pub controllers: Vec, + /// Compute allocation. + pub compute_allocation: Nat, + /// Memory allocation. + pub memory_allocation: Nat, + /// Freezing threshold. + pub freezing_threshold: Nat, +} +#[derive( + CandidType, Serialize, Deserialize, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, +)] +pub struct CanisterStatus { + /// See [CanisterStatusType]. + pub status: CanisterStatusType, + /// See [DefiniteCanisterSettings]. + pub settings: DefiniteCanisterSettings, + /// A SHA256 hash of the module installed on the canister. This is null if the canister is empty. + pub module_hash: Option>, + /// The memory size taken by the canister. + pub memory_size: Nat, + /// The cycle balance of the canister. + pub cycles: Nat, + /// Amount of cycles burned per day. + pub idle_cycles_burned_per_day: Nat, + /// Query statistics + pub query_stats: QueryStats, +} + /// Information about the archive canister (i.e. useful for debugging). #[derive(Clone, Debug, CandidType, Deserialize)] pub struct ArchiveStatus { pub call_info: CallInfo, pub init: ArchiveInit, - pub canister_status: CanisterStatusResponse, + pub canister_status: CanisterStatus, } /// Information about the calls the archive is making to II.