diff --git a/crates/cargo-contract/Cargo.toml b/crates/cargo-contract/Cargo.toml index 44767ec30..8780668c6 100644 --- a/crates/cargo-contract/Cargo.toml +++ b/crates/cargo-contract/Cargo.toml @@ -36,12 +36,12 @@ rust_decimal = "1.30" # dependencies for extrinsics (deploying and calling a contract) async-std = { version = "1.12.0", features = ["attributes", "tokio1"] } -sp-core = "20.0.0" -sp-runtime = "23.0.0" -sp-weights = "19.0.0" -pallet-contracts-primitives = "23.0.0" +sp-core = "21.0.0" +sp-runtime = "24.0.0" +sp-weights = "20.0.0" +pallet-contracts-primitives = "24.0.0" scale-info = "2.8.0" -subxt = "0.28.0" +subxt = "0.29.0" hex = "0.4.3" jsonrpsee = { version = "0.18.2", features = ["ws-client"] } diff --git a/crates/cargo-contract/src/cmd/extrinsics/call.rs b/crates/cargo-contract/src/cmd/extrinsics/call.rs index c4de2a244..3f956cb04 100644 --- a/crates/cargo-contract/src/cmd/extrinsics/call.rs +++ b/crates/cargo-contract/src/cmd/extrinsics/call.rs @@ -168,7 +168,7 @@ impl CallCommand { input_data: Vec, client: &Client, signer: &PairSigner, - ) -> Result> { + ) -> Result> { let url = self.extrinsic_opts.url_to_string(); let token_metadata = TokenMetadata::query(client).await?; let storage_deposit_limit = self diff --git a/crates/cargo-contract/src/cmd/extrinsics/error.rs b/crates/cargo-contract/src/cmd/extrinsics/error.rs index 6a8cdb74b..b960c643f 100644 --- a/crates/cargo-contract/src/cmd/extrinsics/error.rs +++ b/crates/cargo-contract/src/cmd/extrinsics/error.rs @@ -37,9 +37,9 @@ impl From for ErrorVariant { .details() .map(|details| { ErrorVariant::Module(ModuleError { - pallet: details.pallet().to_string(), - error: details.error().to_string(), - docs: details.docs().to_vec(), + pallet: details.pallet.name().to_string(), + error: details.variant.name.to_string(), + docs: details.variant.docs.clone(), }) }) .unwrap_or_else(|err| { @@ -91,11 +91,15 @@ impl ErrorVariant { ) -> anyhow::Result { match error { DispatchError::Module(err) => { - let details = metadata.error(err.index, err.error[0])?; + let pallet = metadata.pallet_by_index_err(err.index)?; + let variant = + pallet.error_variant_by_index(err.error[0]).ok_or_else(|| { + anyhow::anyhow!("Error variant {} not found", err.error[0]) + })?; Ok(ErrorVariant::Module(ModuleError { - pallet: details.pallet().to_owned(), - error: details.error().to_owned(), - docs: details.docs().to_owned(), + pallet: pallet.name().to_string(), + error: variant.name.to_owned(), + docs: variant.docs.to_owned(), })) } err => { diff --git a/crates/cargo-contract/src/cmd/extrinsics/events.rs b/crates/cargo-contract/src/cmd/extrinsics/events.rs index 4ef8df822..df8b9ec44 100644 --- a/crates/cargo-contract/src/cmd/extrinsics/events.rs +++ b/crates/cargo-contract/src/cmd/extrinsics/events.rs @@ -90,18 +90,20 @@ impl DisplayEvents { ) -> Result { let mut events: Vec = vec![]; - let runtime_metadata = subxt_metadata.runtime_metadata(); - let events_transcoder = TranscoderBuilder::new(&runtime_metadata.types) + let events_transcoder = TranscoderBuilder::new(subxt_metadata.types()) .with_default_custom_type_transcoders() .done(); for event in result.iter() { let event = event?; - tracing::debug!("displaying event {:?}", event); + tracing::debug!( + "displaying event {}:{}", + event.pallet_name(), + event.variant_name() + ); - let event_metadata = - subxt_metadata.event(event.pallet_index(), event.variant_index())?; - let event_fields = event_metadata.fields(); + let event_metadata = event.event_metadata(); + let event_fields = &event_metadata.variant.fields; let mut event_entry = Event { pallet: event.pallet_name().to_string(), @@ -136,7 +138,7 @@ impl DisplayEvents { }); let decoded_field = events_transcoder.decode( - &runtime_metadata.types, + subxt_metadata.types(), field_metadata.ty.id, event_data, )?; diff --git a/crates/cargo-contract/src/cmd/extrinsics/instantiate.rs b/crates/cargo-contract/src/cmd/extrinsics/instantiate.rs index 7dfd68cab..f81cd400b 100644 --- a/crates/cargo-contract/src/cmd/extrinsics/instantiate.rs +++ b/crates/cargo-contract/src/cmd/extrinsics/instantiate.rs @@ -364,8 +364,9 @@ impl Exec { async fn instantiate_dry_run( &self, - ) -> Result::AccountId, Balance>> - { + ) -> Result< + ContractInstantiateResult<::AccountId, Balance, ()>, + > { let storage_deposit_limit = self.args.storage_deposit_limit; let call_request = InstantiateRequest { origin: self.signer.account_id().clone(), diff --git a/crates/cargo-contract/src/cmd/extrinsics/mod.rs b/crates/cargo-contract/src/cmd/extrinsics/mod.rs index b89d47ade..411960f43 100644 --- a/crates/cargo-contract/src/cmd/extrinsics/mod.rs +++ b/crates/cargo-contract/src/cmd/extrinsics/mod.rs @@ -327,7 +327,7 @@ pub const MAX_KEY_COL_WIDTH: usize = STORAGE_DEPOSIT_KEY.len() + 1; /// Print to stdout the fields of the result of a `instantiate` or `call` dry-run via RPC. pub fn display_contract_exec_result( - result: &ContractResult, + result: &ContractResult, ) -> Result<()> { let mut debug_message_lines = std::str::from_utf8(&result.debug_message) .context("Error decoding UTF8 debug message bytes")? @@ -352,7 +352,7 @@ pub fn display_contract_exec_result( } pub fn display_contract_exec_result_debug( - result: &ContractResult, + result: &ContractResult, ) -> Result<()> { let mut debug_message_lines = std::str::from_utf8(&result.debug_message) .context("Error decoding UTF8 debug message bytes")? diff --git a/crates/cargo-contract/src/cmd/runtime_api/contracts_runtime.scale b/crates/cargo-contract/src/cmd/runtime_api/contracts_runtime.scale index 363ec4a0e..54dcb1a36 100644 Binary files a/crates/cargo-contract/src/cmd/runtime_api/contracts_runtime.scale and b/crates/cargo-contract/src/cmd/runtime_api/contracts_runtime.scale differ diff --git a/crates/cargo-contract/src/cmd/runtime_api/mod.rs b/crates/cargo-contract/src/cmd/runtime_api/mod.rs index 1a652e546..3a2c34ccb 100644 --- a/crates/cargo-contract/src/cmd/runtime_api/mod.rs +++ b/crates/cargo-contract/src/cmd/runtime_api/mod.rs @@ -19,7 +19,7 @@ #[subxt::subxt( runtime_metadata_path = "src/cmd/runtime_api/contracts_runtime.scale", substitute_type( - type = "sp_weights::weight_v2::Weight", + path = "sp_weights::weight_v2::Weight", with = "::subxt::utils::Static<::sp_weights::Weight>" ) )]