diff --git a/Cargo.lock b/Cargo.lock index ad7b63aba3..049c8ab596 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,9 +111,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" dependencies = [ "anstyle", "anstyle-parse", @@ -126,43 +126,43 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.90" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "anymap2" @@ -519,9 +519,9 @@ checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" @@ -882,9 +882,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -2895,18 +2895,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", @@ -2915,9 +2915,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3239,9 +3239,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3937,18 +3937,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", @@ -3988,9 +3988,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", diff --git a/framework/meta/src/cli/cli_args_standalone.rs b/framework/meta/src/cli/cli_args_standalone.rs index ab39a8273a..390c87cd2a 100644 --- a/framework/meta/src/cli/cli_args_standalone.rs +++ b/framework/meta/src/cli/cli_args_standalone.rs @@ -423,14 +423,6 @@ pub struct AccountArgs { #[clap(global = true)] pub api: Option, - /// Provide if the API is a chain simulator or not - #[arg( - long = "chain-simulator", - default_value = "false", - verbatim_doc_comment - )] - pub chain_simulator: Option, - /// Provide the address you want to retrieve data from #[arg(long = "address", verbatim_doc_comment)] pub address: String, diff --git a/framework/meta/src/cmd/retrieve_address.rs b/framework/meta/src/cmd/retrieve_address.rs index 68e1ed1676..04c46e0deb 100644 --- a/framework/meta/src/cmd/retrieve_address.rs +++ b/framework/meta/src/cmd/retrieve_address.rs @@ -5,10 +5,8 @@ use crate::cli::AccountArgs; /// Interprets arguments and call the account tool from `multiversx_sc_snippets`. pub async fn retrieve_address(args: &AccountArgs) { let api_string = args.api.clone().expect("API needs to be specified"); - let use_chain_simulator = args.chain_simulator.unwrap_or_default(); account_tool::print_account_as_scenario_set_state( GatewayHttpProxy::new(api_string), - use_chain_simulator, args.address.to_string(), ) .await; diff --git a/framework/scenario/src/scenario/model/value/value_key_bytes.rs b/framework/scenario/src/scenario/model/value/value_key_bytes.rs index 12a6813262..7b8f709e9f 100644 --- a/framework/scenario/src/scenario/model/value/value_key_bytes.rs +++ b/framework/scenario/src/scenario/model/value/value_key_bytes.rs @@ -14,6 +14,15 @@ pub struct BytesKey { pub original: String, } +impl BytesKey { + pub fn from_hex(hex_value: &str) -> Self { + Self { + value: hex::decode(hex_value).expect("could not decode hex value"), + original: format!("0x{hex_value}"), + } + } +} + impl From> for BytesKey { fn from(v: Vec) -> Self { BytesKey { diff --git a/framework/scenario/src/scenario/model/value/value_set_bytes.rs b/framework/scenario/src/scenario/model/value/value_set_bytes.rs index 627f2ace9c..160f30f75a 100644 --- a/framework/scenario/src/scenario/model/value/value_set_bytes.rs +++ b/framework/scenario/src/scenario/model/value/value_set_bytes.rs @@ -23,6 +23,13 @@ impl BytesValue { original: ValueSubTree::Str(String::default()), } } + + pub fn from_hex(hex_value: &str) -> Self { + Self { + value: hex::decode(hex_value).expect("could not decode hex value"), + original: ValueSubTree::Str(format!("0x{hex_value}")), + } + } } impl InterpretableFrom for BytesValue { diff --git a/framework/snippets-base/src/account_tool.rs b/framework/snippets-base/src/account_tool.rs index b5d80bb1eb..b0a5ccc220 100644 --- a/framework/snippets-base/src/account_tool.rs +++ b/framework/snippets-base/src/account_tool.rs @@ -17,13 +17,10 @@ use std::collections::{BTreeMap, HashMap}; /// then formats it as a scenario set state step. pub async fn print_account_as_scenario_set_state( gateway_proxy: GatewayProxy, - use_chain_simulator: bool, address_bech32_string: String, ) { - // let gateway_proxy = GatewayHttpProxy::new(api_string); let address = Bech32Address::from_bech32_string(address_bech32_string); - let set_state = - retrieve_account_as_scenario_set_state(&gateway_proxy, use_chain_simulator, &address).await; + let set_state = retrieve_account_as_scenario_set_state(&gateway_proxy, &address).await; let scenario = build_scenario(set_state); println!("{}", scenario.into_raw().to_json_string()); } @@ -39,36 +36,31 @@ fn build_scenario(set_state: SetStateStep) -> Scenario { pub async fn retrieve_account_as_scenario_set_state( api: &GatewayProxy, - use_chain_simulator: bool, bech32_address: &Bech32Address, ) -> SetStateStep { let address = bech32_address.as_address(); let sdk_account = api.request(GetAccountRequest::new(address)).await.unwrap(); - let (account_esdt, account_esdt_roles, account_storage) = if use_chain_simulator { - (HashMap::new(), HashMap::new(), HashMap::new()) - } else { - let account_esdt = api - .request(GetAccountEsdtTokensRequest::new(address)) - .await - .unwrap_or_else(|err| { - panic!("failed to retrieve ESDT tokens for address {bech32_address}: {err}") - }); - let account_esdt_roles = api - .request(GetAccountEsdtRolesRequest::new(address)) - .await - .unwrap_or_else(|err| { - panic!("failed to retrieve ESDT roles for address {bech32_address}: {err}") - }); - let account_storage = api - .request(GetAccountStorageRequest::new(address)) - .await - .unwrap_or_else(|err| { - panic!("failed to retrieve storage for address {bech32_address}: {err}") - }); - - (account_esdt, account_esdt_roles, account_storage) - }; + let account_esdt = api + .request(GetAccountEsdtTokensRequest::new(address)) + .await + .unwrap_or_else(|err| { + eprintln!("failed to retrieve ESDT tokens for address {bech32_address}: {err}"); + HashMap::new() + }); + let account_esdt_roles = api + .request(GetAccountEsdtRolesRequest::new(address)) + .await + .unwrap_or_else(|err| { + eprintln!("failed to retrieve ESDT roles for address {bech32_address}: {err}"); + HashMap::new() + }); + let account_storage = api + .request(GetAccountStorageRequest::new(address)) + .await + .unwrap_or_else(|err| { + panic!("failed to retrieve storage for address {bech32_address}: {err}") + }); let account_state = set_account( sdk_account, @@ -90,7 +82,7 @@ fn set_account( let mut account_state = Account::new() .nonce(account.nonce) .balance(account.balance.as_str()) - .code(account.code); + .code(BytesValue::from_hex(&account.code)); account_state.username = Some(format!("str:{}", account.username.as_str()).into()); account_state.storage = convert_storage(account_storage); @@ -112,6 +104,6 @@ fn convert_storage(account_storage: HashMap) -> BTreeMap