diff --git a/Cargo.lock b/Cargo.lock index 3f401a58d..dc13bcc0d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9505,7 +9505,6 @@ dependencies = [ "duct", "flate2", "glob", - "hex", "indexmap 2.7.0", "mockito", "pop-common", diff --git a/Cargo.toml b/Cargo.toml index 3effb7c2e..c96a1bfe6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,6 @@ contract-extrinsics = { git = "https://github.com/use-ink/cargo-contract", branc #contract-transcode = "5.0.0" contract-transcode = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } heck = "0.5.0" -hex = { version = "0.4.3", default-features = false } # parachains askama = "0.12" diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 6226390f7..420961bfc 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -101,21 +101,16 @@ impl CallChainCommand { }, }; - if self.use_wallet { - // Sign and submit the extrinsic. + // Sign and submit the extrinsic. + let result = if self.use_wallet { let call_data = xt.encode_call_data(&chain.client.metadata())?; - if let Err(e) = - submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await - { - display_message(&e.to_string(), false, &mut cli)?; - break; - } + submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await } else { - // Sign and submit the extrinsic. - if let Err(e) = call.submit_extrinsic(&chain.client, xt, &mut cli).await { - display_message(&e.to_string(), false, &mut cli)?; - break; - } + call.submit_extrinsic(&chain.client, xt, &mut cli).await + }; + + if let Err(e) = result { + display_message(&e.to_string(), false, &mut cli)?; } if !prompt_to_repeat_call diff --git a/crates/pop-parachains/Cargo.toml b/crates/pop-parachains/Cargo.toml index 19d8361d8..6380fbd10 100644 --- a/crates/pop-parachains/Cargo.toml +++ b/crates/pop-parachains/Cargo.toml @@ -24,7 +24,6 @@ tokio.workspace = true url.workspace = true askama.workspace = true -hex.workspace = true indexmap.workspace = true reqwest.workspace = true scale-info.workspace = true diff --git a/crates/pop-parachains/src/call/metadata/mod.rs b/crates/pop-parachains/src/call/metadata/mod.rs index 1f53f523c..5a9a9a2cb 100644 --- a/crates/pop-parachains/src/call/metadata/mod.rs +++ b/crates/pop-parachains/src/call/metadata/mod.rs @@ -4,7 +4,7 @@ use crate::errors::Error; use params::Param; use scale_value::stringify::custom_parsers; use std::fmt::{Display, Formatter}; -use subxt::{dynamic::Value, Metadata, OnlineClient, SubstrateConfig}; +use subxt::{dynamic::Value, utils::to_hex, Metadata, OnlineClient, SubstrateConfig}; pub mod action; pub mod params; @@ -179,7 +179,7 @@ pub fn parse_dispatchable_arguments( .map(|(param, raw_param)| { // Convert sequence parameters to hex if is_sequence let processed_param = if param.is_sequence && !raw_param.starts_with("0x") { - format!("0x{}", hex::encode(raw_param)) + to_hex(&raw_param) } else { raw_param }; @@ -199,6 +199,7 @@ mod tests { use crate::{call::tests::POP_NETWORK_TESTNET_URL, set_up_client}; use anyhow::Result; + use sp_core::bytes::from_hex; use subxt::ext::scale_bits; #[tokio::test] @@ -283,7 +284,7 @@ mod tests { ] .to_vec(); let addr: Vec<_> = - hex::decode("8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48") + from_hex("8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48") .unwrap() .into_iter() .map(|b| Value::u128(b as u128)) diff --git a/crates/pop-parachains/src/call/mod.rs b/crates/pop-parachains/src/call/mod.rs index 32b27aee3..f5bb05b71 100644 --- a/crates/pop-parachains/src/call/mod.rs +++ b/crates/pop-parachains/src/call/mod.rs @@ -5,7 +5,7 @@ use pop_common::{ call::{DefaultEnvironment, DisplayEvents, TokenMetadata, Verbosity}, create_signer, }; -use sp_core::bytes::from_hex; +use sp_core::bytes::{from_hex, to_hex}; use subxt::{ dynamic::Value, tx::{DynamicPayload, Payload, SubmittableExtrinsic}, @@ -116,7 +116,7 @@ pub fn encode_call_data( let call_data = xt .encode_call_data(&client.metadata()) .map_err(|e| Error::CallDataEncodingError(e.to_string()))?; - Ok(format!("0x{}", hex::encode(call_data))) + Ok(to_hex(&call_data, false)) } /// Decodes a hex-encoded string into a vector of bytes representing the call data. @@ -124,8 +124,7 @@ pub fn encode_call_data( /// # Arguments /// * `call_data` - The hex-encoded string representing call data. pub fn decode_call_data(call_data: &str) -> Result, Error> { - hex::decode(call_data.trim_start_matches("0x")) - .map_err(|e| Error::CallDataDecodingError(e.to_string())) + from_hex(call_data).map_err(|e| Error::CallDataDecodingError(e.to_string())) } /// This struct implements the [`Payload`] trait and is used to submit