From 34a42ccbb8d6542201098acf403a8f3c5a9b06e8 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Mon, 24 Jul 2023 18:45:39 +0300 Subject: [PATCH 01/54] initial setup --- .../tests/price_aggregator_blackbox_test.rs | 216 ++++++++++++++++++ .../tests/price_aggregator_whitebox_test.rs | 196 ++++++++++++++++ 2 files changed, 412 insertions(+) create mode 100644 contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs create mode 100644 contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs new file mode 100644 index 0000000000..6b70b4a15b --- /dev/null +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -0,0 +1,216 @@ +use multiversx_price_aggregator_sc::PriceAggregator; +use multiversx_sc::types::{Address, EgldOrEsdtTokenIdentifier, MultiValueEncoded}; +use multiversx_sc_modules::pause::EndpointWrappers; +use multiversx_sc_scenario::{managed_address, managed_biguint, managed_buffer, WhiteboxContract}; + +use multiversx_sc_scenario::{scenario_model::*, *}; + +const PRICE_AGGREGATOR_PATH_EXPR: &str = "file:output/multiversx-price-aggregator-sc.wasm"; + +pub const NR_ORACLES: usize = 4; +pub const SUBMISSION_COUNT: usize = 3; +pub const DECIMALS: u8 = 0; +pub static EGLD_TICKER: &[u8] = b"EGLD"; +pub static USD_TICKER: &[u8] = b"USDC"; + +pub const STAKE_AMOUNT: u64 = 20; +pub const SLASH_AMOUNT: u64 = 10; +pub const SLASH_QUORUM: usize = 2; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/core/price-aggregator"); + + blockchain.register_contract( + PRICE_AGGREGATOR_PATH_EXPR, + multiversx_price_aggregator_sc::ContractBuilder, + ); + blockchain +} + +#[test] +fn price_agg_submit_test() { + let mut world = world(); + let price_aggregator_whitebox = WhiteboxContract::new( + "sc:price-aggregator", + multiversx_price_aggregator_sc::contract_obj, + ); + let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); + + let mut oracles = Vec::new(); + for i in 0..NR_ORACLES { + let oracle_address_expr = format!("address::oracle{i}"); + let oracle_address = Address::from_slice(oracle_address_expr.as_bytes()); + oracles.push(oracle_address); + } + + + // let mut oracle_args = MultiValueEncoded::new(); + // for oracle in &oracles { + // oracle_args.push(managed_address!(oracle)); + // } + // sc.init( + // EgldOrEsdtTokenIdentifier::egld(), + // managed_biguint!(STAKE_AMOUNT), + // managed_biguint!(SLASH_AMOUNT), + // SLASH_QUORUM, + // SUBMISSION_COUNT, + // oracle_args, + // ) + + world + .set_state_step( + SetStateStep::new() + .put_account("address:owner", Account::new().nonce(1)) + .new_address("address:owner", 1, "sc:price-aggregator") + .block_timestamp(100) + .put_account( + "address:oracle0", + Account::new().nonce(1).balance(STAKE_AMOUNT), + ), + ) + .sc_deploy( + ScDeployStep::new() + .from("address:owner") + .code(price_aggregator_code) + .argument() + }, + // .whitebox_deploy( + // &price_aggregator_whitebox, + // ScDeployStep::new() + // .from("address:owner") + // .code(price_aggregator_code), + // |sc| { + // let mut oracle_args = MultiValueEncoded::new(); + // for oracle in &oracles { + // oracle_args.push(managed_address!(oracle)); + // } + // sc.init( + // EgldOrEsdtTokenIdentifier::egld(), + // managed_biguint!(STAKE_AMOUNT), + // managed_biguint!(SLASH_AMOUNT), + // SLASH_QUORUM, + // SUBMISSION_COUNT, + // oracle_args, + // ) + // }, + // ) + // .whitebox_call( + // &price_aggregator_whitebox, + // ScCallStep::new().from("address:owner"), + // |sc| { + // sc.set_pair_decimals( + // managed_buffer!(EGLD_TICKER), + // managed_buffer!(USD_TICKER), + // DECIMALS, + // ) + // }, + // ) + // .whitebox_call_check( + // &price_aggregator_whitebox, + // ScCallStep::new().from("address:oracle0"), + // |sc| { + // sc.submit( + // managed_buffer!(EGLD_TICKER), + // managed_buffer!(USD_TICKER), + // 99, + // managed_biguint!(100), + // DECIMALS, + // ) + // }, + // |r| { + // r.assert_user_error("Contract is paused"); + // }, + // ) + // .whitebox_call( + // &price_aggregator_whitebox, + // ScCallStep::new().from("address:owner"), + // |sc| sc.call_unpause_endpoint(), + // ) + // .whitebox_call_check( + // &price_aggregator_whitebox, + // ScCallStep::new().from("address:oracle0"), + // |sc| { + // sc.submit( + // managed_buffer!(EGLD_TICKER), + // managed_buffer!(USD_TICKER), + // 10, + // managed_biguint!(100), + // DECIMALS, + // ) + // }, + // |r| { + // r.assert_user_error("First submission too old"); + // }, + // ) + // .whitebox_call_check( + // &price_aggregator_whitebox, + // ScCallStep::new().from("address:oracle0"), + // |sc| { + // sc.call_unpause_endpoint(); + // sc.submit( + // managed_buffer!(EGLD_TICKER), + // managed_buffer!(USD_TICKER), + // 95, + // managed_biguint!(100), + // DECIMALS, + // ) + // }, + // |r| { + // r.assert_ok(); + // }, + // ); + + // pa_setup + // .b_mock + // .execute_query(&pa_setup.price_agg, |sc| { + // let token_pair = TokenPair { + // from: managed_buffer!(EGLD_TICKER), + // to: managed_buffer!(USD_TICKER), + // }; + // assert_eq!( + // sc.first_submission_timestamp(&token_pair).get(), + // current_timestamp + // ); + // assert_eq!( + // sc.last_submission_timestamp(&token_pair).get(), + // current_timestamp + // ); + + // let submissions = sc.submissions().get(&token_pair).unwrap(); + // assert_eq!(submissions.len(), 1); + // assert_eq!( + // submissions.get(&managed_address!(&oracles[0])).unwrap(), + // managed_biguint!(100) + // ); + + // assert_eq!( + // sc.oracle_status() + // .get(&managed_address!(&oracles[0])) + // .unwrap(), + // OracleStatus { + // total_submissions: 1, + // accepted_submissions: 1 + // } + // ); + // }) + // .assert_ok(); + + // // first oracle submit again - submission not accepted + // pa_setup.submit(&oracles[0], 95, 100).assert_ok(); + + // pa_setup + // .b_mock + // .execute_query(&pa_setup.price_agg, |sc| { + // assert_eq!( + // sc.oracle_status() + // .get(&managed_address!(&oracles[0])) + // .unwrap(), + // OracleStatus { + // total_submissions: 2, + // accepted_submissions: 1 + // } + // ); + // }) + // .assert_ok(); +} diff --git a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs new file mode 100644 index 0000000000..3737fbf458 --- /dev/null +++ b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs @@ -0,0 +1,196 @@ +use multiversx_price_aggregator_sc::PriceAggregator; +use multiversx_sc::types::{Address, EgldOrEsdtTokenIdentifier, MultiValueEncoded}; +use multiversx_sc_modules::pause::EndpointWrappers; +use multiversx_sc_scenario::{managed_address, managed_biguint, managed_buffer, WhiteboxContract}; + +use multiversx_sc_scenario::{scenario_model::*, *}; + +const PRICE_AGGREGATOR_PATH_EXPR: &str = "file:output/multiversx-price-aggregator-sc.wasm"; + +pub const NR_ORACLES: usize = 4; +pub const SUBMISSION_COUNT: usize = 3; +pub const DECIMALS: u8 = 0; +pub static EGLD_TICKER: &[u8] = b"EGLD"; +pub static USD_TICKER: &[u8] = b"USDC"; + +pub const STAKE_AMOUNT: u64 = 20; +pub const SLASH_AMOUNT: u64 = 10; +pub const SLASH_QUORUM: usize = 2; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/core/price-aggregator"); + + blockchain.register_contract( + PRICE_AGGREGATOR_PATH_EXPR, + multiversx_price_aggregator_sc::ContractBuilder, + ); + blockchain +} + +#[test] +fn price_agg_submit_test() { + let mut world = world(); + let price_aggregator_whitebox = WhiteboxContract::new( + "sc:price-aggregator", + multiversx_price_aggregator_sc::contract_obj, + ); + let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); + + let mut oracles = Vec::new(); + for i in 0..NR_ORACLES { + let oracle_address_expr = format!("address::oracle{i}"); + let oracle_address = Address::from_slice(oracle_address_expr.as_bytes()); + oracles.push(oracle_address); + } + + world + .set_state_step( + SetStateStep::new() + .put_account("address:owner", Account::new().nonce(1)) + .new_address("address:owner", 1, "sc:price-aggregator") + .block_timestamp(100) + .put_account( + "address:oracle0", + Account::new().nonce(1).balance(STAKE_AMOUNT), + ), + ) + .whitebox_deploy( + &price_aggregator_whitebox, + ScDeployStep::new() + .from("address:owner") + .code(price_aggregator_code), + |sc| { + let mut oracle_args = MultiValueEncoded::new(); + for oracle in &oracles { + oracle_args.push(managed_address!(oracle)); + } + sc.init( + EgldOrEsdtTokenIdentifier::egld(), + managed_biguint!(STAKE_AMOUNT), + managed_biguint!(SLASH_AMOUNT), + SLASH_QUORUM, + SUBMISSION_COUNT, + oracle_args, + ) + }, + ) + .whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from("address:owner"), + |sc| { + sc.set_pair_decimals( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + DECIMALS, + ) + }, + ) + .whitebox_call_check( + &price_aggregator_whitebox, + ScCallStep::new().from("address:oracle0"), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 99, + managed_biguint!(100), + DECIMALS, + ) + }, + |r| { + r.assert_user_error("Contract is paused"); + }, + ) + .whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from("address:owner"), + |sc| sc.call_unpause_endpoint(), + ) + .whitebox_call_check( + &price_aggregator_whitebox, + ScCallStep::new().from("address:oracle0"), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 10, + managed_biguint!(100), + DECIMALS, + ) + }, + |r| { + r.assert_user_error("First submission too old"); + }, + ) + .whitebox_call_check( + &price_aggregator_whitebox, + ScCallStep::new().from("address:oracle0"), + |sc| { + sc.call_unpause_endpoint(); + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 95, + managed_biguint!(100), + DECIMALS, + ) + }, + |r| { + r.assert_ok(); + }, + ); + + // pa_setup + // .b_mock + // .execute_query(&pa_setup.price_agg, |sc| { + // let token_pair = TokenPair { + // from: managed_buffer!(EGLD_TICKER), + // to: managed_buffer!(USD_TICKER), + // }; + // assert_eq!( + // sc.first_submission_timestamp(&token_pair).get(), + // current_timestamp + // ); + // assert_eq!( + // sc.last_submission_timestamp(&token_pair).get(), + // current_timestamp + // ); + + // let submissions = sc.submissions().get(&token_pair).unwrap(); + // assert_eq!(submissions.len(), 1); + // assert_eq!( + // submissions.get(&managed_address!(&oracles[0])).unwrap(), + // managed_biguint!(100) + // ); + + // assert_eq!( + // sc.oracle_status() + // .get(&managed_address!(&oracles[0])) + // .unwrap(), + // OracleStatus { + // total_submissions: 1, + // accepted_submissions: 1 + // } + // ); + // }) + // .assert_ok(); + + // // first oracle submit again - submission not accepted + // pa_setup.submit(&oracles[0], 95, 100).assert_ok(); + + // pa_setup + // .b_mock + // .execute_query(&pa_setup.price_agg, |sc| { + // assert_eq!( + // sc.oracle_status() + // .get(&managed_address!(&oracles[0])) + // .unwrap(), + // OracleStatus { + // total_submissions: 2, + // accepted_submissions: 1 + // } + // ); + // }) + // .assert_ok(); +} From ee949c3567c2238c0bb845cf3a783e9909d4ca78 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Tue, 25 Jul 2023 13:20:00 +0300 Subject: [PATCH 02/54] playground with new whitebox framework - wip --- .../tests/price_aggregator_blackbox_test.rs | 216 ------------------ .../tests/price_aggregator_whitebox_test.rs | 192 +++++++--------- .../scenario/model/transaction/tx_expect.rs | 13 +- 3 files changed, 88 insertions(+), 333 deletions(-) delete mode 100644 contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs deleted file mode 100644 index 6b70b4a15b..0000000000 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ /dev/null @@ -1,216 +0,0 @@ -use multiversx_price_aggregator_sc::PriceAggregator; -use multiversx_sc::types::{Address, EgldOrEsdtTokenIdentifier, MultiValueEncoded}; -use multiversx_sc_modules::pause::EndpointWrappers; -use multiversx_sc_scenario::{managed_address, managed_biguint, managed_buffer, WhiteboxContract}; - -use multiversx_sc_scenario::{scenario_model::*, *}; - -const PRICE_AGGREGATOR_PATH_EXPR: &str = "file:output/multiversx-price-aggregator-sc.wasm"; - -pub const NR_ORACLES: usize = 4; -pub const SUBMISSION_COUNT: usize = 3; -pub const DECIMALS: u8 = 0; -pub static EGLD_TICKER: &[u8] = b"EGLD"; -pub static USD_TICKER: &[u8] = b"USDC"; - -pub const STAKE_AMOUNT: u64 = 20; -pub const SLASH_AMOUNT: u64 = 10; -pub const SLASH_QUORUM: usize = 2; - -fn world() -> ScenarioWorld { - let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/core/price-aggregator"); - - blockchain.register_contract( - PRICE_AGGREGATOR_PATH_EXPR, - multiversx_price_aggregator_sc::ContractBuilder, - ); - blockchain -} - -#[test] -fn price_agg_submit_test() { - let mut world = world(); - let price_aggregator_whitebox = WhiteboxContract::new( - "sc:price-aggregator", - multiversx_price_aggregator_sc::contract_obj, - ); - let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); - - let mut oracles = Vec::new(); - for i in 0..NR_ORACLES { - let oracle_address_expr = format!("address::oracle{i}"); - let oracle_address = Address::from_slice(oracle_address_expr.as_bytes()); - oracles.push(oracle_address); - } - - - // let mut oracle_args = MultiValueEncoded::new(); - // for oracle in &oracles { - // oracle_args.push(managed_address!(oracle)); - // } - // sc.init( - // EgldOrEsdtTokenIdentifier::egld(), - // managed_biguint!(STAKE_AMOUNT), - // managed_biguint!(SLASH_AMOUNT), - // SLASH_QUORUM, - // SUBMISSION_COUNT, - // oracle_args, - // ) - - world - .set_state_step( - SetStateStep::new() - .put_account("address:owner", Account::new().nonce(1)) - .new_address("address:owner", 1, "sc:price-aggregator") - .block_timestamp(100) - .put_account( - "address:oracle0", - Account::new().nonce(1).balance(STAKE_AMOUNT), - ), - ) - .sc_deploy( - ScDeployStep::new() - .from("address:owner") - .code(price_aggregator_code) - .argument() - }, - // .whitebox_deploy( - // &price_aggregator_whitebox, - // ScDeployStep::new() - // .from("address:owner") - // .code(price_aggregator_code), - // |sc| { - // let mut oracle_args = MultiValueEncoded::new(); - // for oracle in &oracles { - // oracle_args.push(managed_address!(oracle)); - // } - // sc.init( - // EgldOrEsdtTokenIdentifier::egld(), - // managed_biguint!(STAKE_AMOUNT), - // managed_biguint!(SLASH_AMOUNT), - // SLASH_QUORUM, - // SUBMISSION_COUNT, - // oracle_args, - // ) - // }, - // ) - // .whitebox_call( - // &price_aggregator_whitebox, - // ScCallStep::new().from("address:owner"), - // |sc| { - // sc.set_pair_decimals( - // managed_buffer!(EGLD_TICKER), - // managed_buffer!(USD_TICKER), - // DECIMALS, - // ) - // }, - // ) - // .whitebox_call_check( - // &price_aggregator_whitebox, - // ScCallStep::new().from("address:oracle0"), - // |sc| { - // sc.submit( - // managed_buffer!(EGLD_TICKER), - // managed_buffer!(USD_TICKER), - // 99, - // managed_biguint!(100), - // DECIMALS, - // ) - // }, - // |r| { - // r.assert_user_error("Contract is paused"); - // }, - // ) - // .whitebox_call( - // &price_aggregator_whitebox, - // ScCallStep::new().from("address:owner"), - // |sc| sc.call_unpause_endpoint(), - // ) - // .whitebox_call_check( - // &price_aggregator_whitebox, - // ScCallStep::new().from("address:oracle0"), - // |sc| { - // sc.submit( - // managed_buffer!(EGLD_TICKER), - // managed_buffer!(USD_TICKER), - // 10, - // managed_biguint!(100), - // DECIMALS, - // ) - // }, - // |r| { - // r.assert_user_error("First submission too old"); - // }, - // ) - // .whitebox_call_check( - // &price_aggregator_whitebox, - // ScCallStep::new().from("address:oracle0"), - // |sc| { - // sc.call_unpause_endpoint(); - // sc.submit( - // managed_buffer!(EGLD_TICKER), - // managed_buffer!(USD_TICKER), - // 95, - // managed_biguint!(100), - // DECIMALS, - // ) - // }, - // |r| { - // r.assert_ok(); - // }, - // ); - - // pa_setup - // .b_mock - // .execute_query(&pa_setup.price_agg, |sc| { - // let token_pair = TokenPair { - // from: managed_buffer!(EGLD_TICKER), - // to: managed_buffer!(USD_TICKER), - // }; - // assert_eq!( - // sc.first_submission_timestamp(&token_pair).get(), - // current_timestamp - // ); - // assert_eq!( - // sc.last_submission_timestamp(&token_pair).get(), - // current_timestamp - // ); - - // let submissions = sc.submissions().get(&token_pair).unwrap(); - // assert_eq!(submissions.len(), 1); - // assert_eq!( - // submissions.get(&managed_address!(&oracles[0])).unwrap(), - // managed_biguint!(100) - // ); - - // assert_eq!( - // sc.oracle_status() - // .get(&managed_address!(&oracles[0])) - // .unwrap(), - // OracleStatus { - // total_submissions: 1, - // accepted_submissions: 1 - // } - // ); - // }) - // .assert_ok(); - - // // first oracle submit again - submission not accepted - // pa_setup.submit(&oracles[0], 95, 100).assert_ok(); - - // pa_setup - // .b_mock - // .execute_query(&pa_setup.price_agg, |sc| { - // assert_eq!( - // sc.oracle_status() - // .get(&managed_address!(&oracles[0])) - // .unwrap(), - // OracleStatus { - // total_submissions: 2, - // accepted_submissions: 1 - // } - // ); - // }) - // .assert_ok(); -} diff --git a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs index 3737fbf458..64a307cf51 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs @@ -1,83 +1,101 @@ -use multiversx_price_aggregator_sc::PriceAggregator; +#[allow(unused_imports)] +use multiversx_price_aggregator_sc::{ + staking::EndpointWrappers as StakingEndpointWrappers, PriceAggregator, +}; use multiversx_sc::types::{Address, EgldOrEsdtTokenIdentifier, MultiValueEncoded}; -use multiversx_sc_modules::pause::EndpointWrappers; -use multiversx_sc_scenario::{managed_address, managed_biguint, managed_buffer, WhiteboxContract}; +use multiversx_sc_modules::pause::EndpointWrappers as PauseEndpointWrappers; +use multiversx_sc_scenario::{ + managed_address, managed_biguint, managed_buffer, scenario_model::*, WhiteboxContract, *, +}; -use multiversx_sc_scenario::{scenario_model::*, *}; - -const PRICE_AGGREGATOR_PATH_EXPR: &str = "file:output/multiversx-price-aggregator-sc.wasm"; - -pub const NR_ORACLES: usize = 4; -pub const SUBMISSION_COUNT: usize = 3; pub const DECIMALS: u8 = 0; -pub static EGLD_TICKER: &[u8] = b"EGLD"; -pub static USD_TICKER: &[u8] = b"USDC"; - -pub const STAKE_AMOUNT: u64 = 20; +pub const EGLD_TICKER: &[u8] = b"EGLD"; +pub const NR_ORACLES: usize = 4; pub const SLASH_AMOUNT: u64 = 10; pub const SLASH_QUORUM: usize = 2; +pub const STAKE_AMOUNT: u64 = 20; +pub const SUBMISSION_COUNT: usize = 3; +pub const USD_TICKER: &[u8] = b"USDC"; + +const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const PRICE_AGGREGATOR_ADDRESS_EXPR: &str = "sc:price-aggregator"; +const PRICE_AGGREGATOR_PATH_EXPR: &str = "file:output/multiversx-price-aggregator-sc.wasm"; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/core/price-aggregator"); + blockchain.set_current_dir_from_workspace("contracts/core/price-aggregator"); blockchain.register_contract( PRICE_AGGREGATOR_PATH_EXPR, multiversx_price_aggregator_sc::ContractBuilder, ); + blockchain } +#[ignore = "work in progress"] #[test] -fn price_agg_submit_test() { +fn test_price_aggregator_submit() { let mut world = world(); let price_aggregator_whitebox = WhiteboxContract::new( - "sc:price-aggregator", + PRICE_AGGREGATOR_ADDRESS_EXPR, multiversx_price_aggregator_sc::contract_obj, ); let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); + let mut set_state_step = SetStateStep::new() + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) + .block_timestamp(100); + let mut oracles = Vec::new(); - for i in 0..NR_ORACLES { + for i in 1..=NR_ORACLES { let oracle_address_expr = format!("address::oracle{i}"); let oracle_address = Address::from_slice(oracle_address_expr.as_bytes()); - oracles.push(oracle_address); + + set_state_step = set_state_step.put_account( + oracle_address_expr.as_str(), + Account::new().nonce(1).balance(STAKE_AMOUNT), + ); + oracles.push((oracle_address_expr, oracle_address)); } + world.set_state_step(set_state_step).whitebox_deploy( + &price_aggregator_whitebox, + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(price_aggregator_code), + |sc| { + let mut oracle_args = MultiValueEncoded::new(); + for (_, oracle_address) in &oracles { + oracle_args.push(managed_address!(oracle_address)); + } + + sc.init( + EgldOrEsdtTokenIdentifier::egld(), + managed_biguint!(STAKE_AMOUNT), + managed_biguint!(SLASH_AMOUNT), + SLASH_QUORUM, + SUBMISSION_COUNT, + oracle_args, + ) + }, + ); + + // for (oracle_address_expr, _) in &oracles { + // world.whitebox_call( + // &price_aggregator_whitebox, + // ScCallStep::new() + // .from(oracle_address_expr.as_str()) + // .egld_value(STAKE_AMOUNT), + // |sc| sc.call_stake(), + // ); + // } + world - .set_state_step( - SetStateStep::new() - .put_account("address:owner", Account::new().nonce(1)) - .new_address("address:owner", 1, "sc:price-aggregator") - .block_timestamp(100) - .put_account( - "address:oracle0", - Account::new().nonce(1).balance(STAKE_AMOUNT), - ), - ) - .whitebox_deploy( - &price_aggregator_whitebox, - ScDeployStep::new() - .from("address:owner") - .code(price_aggregator_code), - |sc| { - let mut oracle_args = MultiValueEncoded::new(); - for oracle in &oracles { - oracle_args.push(managed_address!(oracle)); - } - sc.init( - EgldOrEsdtTokenIdentifier::egld(), - managed_biguint!(STAKE_AMOUNT), - managed_biguint!(SLASH_AMOUNT), - SLASH_QUORUM, - SUBMISSION_COUNT, - oracle_args, - ) - }, - ) .whitebox_call( &price_aggregator_whitebox, - ScCallStep::new().from("address:owner"), + ScCallStep::new().from(OWNER_ADDRESS_EXPR), |sc| { sc.set_pair_decimals( managed_buffer!(EGLD_TICKER), @@ -88,7 +106,9 @@ fn price_agg_submit_test() { ) .whitebox_call_check( &price_aggregator_whitebox, - ScCallStep::new().from("address:oracle0"), + ScCallStep::new() + .from(oracles[0].0.as_str()) + .expect(TxExpect::user_error("str:Contract is paused")), |sc| { sc.submit( managed_buffer!(EGLD_TICKER), @@ -98,18 +118,16 @@ fn price_agg_submit_test() { DECIMALS, ) }, - |r| { - r.assert_user_error("Contract is paused"); - }, + |r| r.assert_user_error("Contract is paused"), ) .whitebox_call( &price_aggregator_whitebox, - ScCallStep::new().from("address:owner"), + ScCallStep::new().from(OWNER_ADDRESS_EXPR), |sc| sc.call_unpause_endpoint(), ) .whitebox_call_check( &price_aggregator_whitebox, - ScCallStep::new().from("address:oracle0"), + ScCallStep::new().from(oracles[0].0.as_str()).no_expect(), |sc| { sc.submit( managed_buffer!(EGLD_TICKER), @@ -119,15 +137,14 @@ fn price_agg_submit_test() { DECIMALS, ) }, - |r| { - r.assert_user_error("First submission too old"); + |_r| { + // r.assert_user_error("First submission too old"); }, ) .whitebox_call_check( &price_aggregator_whitebox, - ScCallStep::new().from("address:oracle0"), + ScCallStep::new().from(oracles[0].0.as_str()).no_expect(), |sc| { - sc.call_unpause_endpoint(); sc.submit( managed_buffer!(EGLD_TICKER), managed_buffer!(USD_TICKER), @@ -136,61 +153,8 @@ fn price_agg_submit_test() { DECIMALS, ) }, - |r| { - r.assert_ok(); + |_r| { + // r.assert_ok(); }, ); - - // pa_setup - // .b_mock - // .execute_query(&pa_setup.price_agg, |sc| { - // let token_pair = TokenPair { - // from: managed_buffer!(EGLD_TICKER), - // to: managed_buffer!(USD_TICKER), - // }; - // assert_eq!( - // sc.first_submission_timestamp(&token_pair).get(), - // current_timestamp - // ); - // assert_eq!( - // sc.last_submission_timestamp(&token_pair).get(), - // current_timestamp - // ); - - // let submissions = sc.submissions().get(&token_pair).unwrap(); - // assert_eq!(submissions.len(), 1); - // assert_eq!( - // submissions.get(&managed_address!(&oracles[0])).unwrap(), - // managed_biguint!(100) - // ); - - // assert_eq!( - // sc.oracle_status() - // .get(&managed_address!(&oracles[0])) - // .unwrap(), - // OracleStatus { - // total_submissions: 1, - // accepted_submissions: 1 - // } - // ); - // }) - // .assert_ok(); - - // // first oracle submit again - submission not accepted - // pa_setup.submit(&oracles[0], 95, 100).assert_ok(); - - // pa_setup - // .b_mock - // .execute_query(&pa_setup.price_agg, |sc| { - // assert_eq!( - // sc.oracle_status() - // .get(&managed_address!(&oracles[0])) - // .unwrap(), - // OracleStatus { - // total_submissions: 2, - // accepted_submissions: 1 - // } - // ); - // }) - // .assert_ok(); } diff --git a/framework/scenario/src/scenario/model/transaction/tx_expect.rs b/framework/scenario/src/scenario/model/transaction/tx_expect.rs index 9a49b6cc51..6f64a471f0 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_expect.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_expect.rs @@ -1,5 +1,4 @@ -use multiversx_chain_vm::tx_mock::result_values_to_string; - +use super::TxResponse; use crate::{ scenario::model::{BytesValue, CheckLogs, CheckValue, CheckValueList, U64Value}, scenario_format::{ @@ -8,8 +7,9 @@ use crate::{ }, scenario_model::Checkable, }; +use multiversx_chain_vm::tx_mock::result_values_to_string; -use super::TxResponse; +const USER_ERROR_CODE: u64 = 4; #[derive(Debug, Clone)] pub struct TxExpect { @@ -57,6 +57,13 @@ impl TxExpect { } } + pub fn user_error(err_msg_expr: E) -> Self + where + BytesValue: From, + { + Self::err(USER_ERROR_CODE, err_msg_expr) + } + pub fn no_result(mut self) -> Self { self.out = CheckValue::Equal(Vec::new()); self.build_from_response = false; From 2e422daf7208114bc958a76b2db803609daffee9 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 26 Jul 2023 19:10:55 +0300 Subject: [PATCH 03/54] first full working test with new whitebox syntax --- .../tests/price_aggregator_whitebox_test.rs | 120 ++++++++++++++---- 1 file changed, 95 insertions(+), 25 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs index 64a307cf51..907175da7d 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs @@ -1,8 +1,9 @@ -#[allow(unused_imports)] use multiversx_price_aggregator_sc::{ - staking::EndpointWrappers as StakingEndpointWrappers, PriceAggregator, + price_aggregator_data::{OracleStatus, TokenPair}, + staking::EndpointWrappers as StakingEndpointWrappers, + PriceAggregator, }; -use multiversx_sc::types::{Address, EgldOrEsdtTokenIdentifier, MultiValueEncoded}; +use multiversx_sc::types::{EgldOrEsdtTokenIdentifier, MultiValueEncoded}; use multiversx_sc_modules::pause::EndpointWrappers as PauseEndpointWrappers; use multiversx_sc_scenario::{ managed_address, managed_biguint, managed_buffer, scenario_model::*, WhiteboxContract, *, @@ -33,10 +34,10 @@ fn world() -> ScenarioWorld { blockchain } -#[ignore = "work in progress"] #[test] fn test_price_aggregator_submit() { let mut world = world(); + let current_timestamp = 100; let price_aggregator_whitebox = WhiteboxContract::new( PRICE_AGGREGATOR_ADDRESS_EXPR, multiversx_price_aggregator_sc::contract_obj, @@ -50,14 +51,14 @@ fn test_price_aggregator_submit() { let mut oracles = Vec::new(); for i in 1..=NR_ORACLES { - let oracle_address_expr = format!("address::oracle{i}"); - let oracle_address = Address::from_slice(oracle_address_expr.as_bytes()); + let oracle_address_expr = format!("address:oracle{i}"); + let oracle_address = AddressValue::from(oracle_address_expr.as_str()); set_state_step = set_state_step.put_account( oracle_address_expr.as_str(), Account::new().nonce(1).balance(STAKE_AMOUNT), ); - oracles.push((oracle_address_expr, oracle_address)); + oracles.push(oracle_address); } world.set_state_step(set_state_step).whitebox_deploy( @@ -67,8 +68,8 @@ fn test_price_aggregator_submit() { .code(price_aggregator_code), |sc| { let mut oracle_args = MultiValueEncoded::new(); - for (_, oracle_address) in &oracles { - oracle_args.push(managed_address!(oracle_address)); + for oracle_address in &oracles { + oracle_args.push(managed_address!(&oracle_address.to_address())); } sc.init( @@ -82,15 +83,15 @@ fn test_price_aggregator_submit() { }, ); - // for (oracle_address_expr, _) in &oracles { - // world.whitebox_call( - // &price_aggregator_whitebox, - // ScCallStep::new() - // .from(oracle_address_expr.as_str()) - // .egld_value(STAKE_AMOUNT), - // |sc| sc.call_stake(), - // ); - // } + for oracle_address in &oracles { + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new() + .from(oracle_address) + .egld_value(STAKE_AMOUNT), + |sc| sc.call_stake(), + ); + } world .whitebox_call( @@ -107,7 +108,7 @@ fn test_price_aggregator_submit() { .whitebox_call_check( &price_aggregator_whitebox, ScCallStep::new() - .from(oracles[0].0.as_str()) + .from(&oracles[0]) .expect(TxExpect::user_error("str:Contract is paused")), |sc| { sc.submit( @@ -127,7 +128,7 @@ fn test_price_aggregator_submit() { ) .whitebox_call_check( &price_aggregator_whitebox, - ScCallStep::new().from(oracles[0].0.as_str()).no_expect(), + ScCallStep::new().from(&oracles[0]).no_expect(), |sc| { sc.submit( managed_buffer!(EGLD_TICKER), @@ -137,13 +138,13 @@ fn test_price_aggregator_submit() { DECIMALS, ) }, - |_r| { - // r.assert_user_error("First submission too old"); + |r| { + r.assert_user_error("First submission too old"); }, ) .whitebox_call_check( &price_aggregator_whitebox, - ScCallStep::new().from(oracles[0].0.as_str()).no_expect(), + ScCallStep::new().from(&oracles[0]), |sc| { sc.submit( managed_buffer!(EGLD_TICKER), @@ -153,8 +154,77 @@ fn test_price_aggregator_submit() { DECIMALS, ) }, - |_r| { - // r.assert_ok(); + |r| { + r.assert_ok(); }, ); + + world.whitebox_query_check( + &price_aggregator_whitebox, + |sc| { + let token_pair = TokenPair { + from: managed_buffer!(EGLD_TICKER), + to: managed_buffer!(USD_TICKER), + }; + assert_eq!( + sc.first_submission_timestamp(&token_pair).get(), + current_timestamp + ); + assert_eq!( + sc.last_submission_timestamp(&token_pair).get(), + current_timestamp + ); + + let submissions = sc.submissions().get(&token_pair).unwrap(); + assert_eq!(submissions.len(), 1); + assert_eq!( + submissions + .get(&managed_address!(&oracles[0].to_address())) + .unwrap(), + managed_biguint!(100) + ); + + assert_eq!( + sc.oracle_status() + .get(&managed_address!(&oracles[0].to_address())) + .unwrap(), + OracleStatus { + total_submissions: 1, + accepted_submissions: 1 + } + ); + }, + |r| r.assert_ok(), + ); + + world.whitebox_call_check( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[0]), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 95, + managed_biguint!(100), + DECIMALS, + ) + }, + |r| r.assert_ok(), + ); + + world.whitebox_query_check( + &price_aggregator_whitebox, + |sc| { + assert_eq!( + sc.oracle_status() + .get(&managed_address!(&oracles[0].to_address())) + .unwrap(), + OracleStatus { + total_submissions: 2, + accepted_submissions: 1 + } + ); + }, + |r| r.assert_ok(), + ); } From ed02c5999b72760ec0449113f0f6217e13cd3343 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 26 Jul 2023 19:30:44 +0300 Subject: [PATCH 04/54] migrate another test --- .../tests/price_aggregator_whitebox_test.rs | 378 +++++++++++++----- 1 file changed, 268 insertions(+), 110 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs index 907175da7d..78ac2bbc17 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs @@ -1,5 +1,5 @@ use multiversx_price_aggregator_sc::{ - price_aggregator_data::{OracleStatus, TokenPair}, + price_aggregator_data::{OracleStatus, TimestampedPrice, TokenPair}, staking::EndpointWrappers as StakingEndpointWrappers, PriceAggregator, }; @@ -36,6 +36,7 @@ fn world() -> ScenarioWorld { #[test] fn test_price_aggregator_submit() { + // setup let mut world = world(); let current_timestamp = 100; let price_aggregator_whitebox = WhiteboxContract::new( @@ -61,6 +62,7 @@ fn test_price_aggregator_submit() { oracles.push(oracle_address); } + // init price aggregator world.set_state_step(set_state_step).whitebox_deploy( &price_aggregator_whitebox, ScDeployStep::new() @@ -93,111 +95,221 @@ fn test_price_aggregator_submit() { ); } - world - .whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new().from(OWNER_ADDRESS_EXPR), - |sc| { - sc.set_pair_decimals( - managed_buffer!(EGLD_TICKER), - managed_buffer!(USD_TICKER), - DECIMALS, - ) - }, - ) - .whitebox_call_check( + // configure the number of decimals + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), + |sc| { + sc.set_pair_decimals( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + DECIMALS, + ) + }, + ); + + // try submit while paused + world.whitebox_call_check( + &price_aggregator_whitebox, + ScCallStep::new() + .from(&oracles[0]) + .expect(TxExpect::user_error("str:Contract is paused")), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 99, + managed_biguint!(100), + DECIMALS, + ) + }, + |r| r.assert_user_error("Contract is paused"), + ); + + // unpause + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), + |sc| sc.call_unpause_endpoint(), + ); + + // submit first timestamp too old + world.whitebox_call_check( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[0]).no_expect(), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 10, + managed_biguint!(100), + DECIMALS, + ) + }, + |r| { + r.assert_user_error("First submission too old"); + }, + ); + + // submit ok + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[0]), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 95, + managed_biguint!(100), + DECIMALS, + ) + }, + ); + + world.whitebox_query(&price_aggregator_whitebox, |sc| { + let token_pair = TokenPair { + from: managed_buffer!(EGLD_TICKER), + to: managed_buffer!(USD_TICKER), + }; + assert_eq!( + sc.first_submission_timestamp(&token_pair).get(), + current_timestamp + ); + assert_eq!( + sc.last_submission_timestamp(&token_pair).get(), + current_timestamp + ); + + let submissions = sc.submissions().get(&token_pair).unwrap(); + assert_eq!(submissions.len(), 1); + assert_eq!( + submissions + .get(&managed_address!(&oracles[0].to_address())) + .unwrap(), + managed_biguint!(100) + ); + + assert_eq!( + sc.oracle_status() + .get(&managed_address!(&oracles[0].to_address())) + .unwrap(), + OracleStatus { + total_submissions: 1, + accepted_submissions: 1 + } + ); + }); + + // first oracle submit again - submission not accepted + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[0]), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 95, + managed_biguint!(100), + DECIMALS, + ) + }, + ); + + world.whitebox_query(&price_aggregator_whitebox, |sc| { + assert_eq!( + sc.oracle_status() + .get(&managed_address!(&oracles[0].to_address())) + .unwrap(), + OracleStatus { + total_submissions: 2, + accepted_submissions: 1 + } + ); + }); +} + +#[test] +fn test_price_aggregator_submit_round_ok() { + // setup + let mut world = world(); + let price_aggregator_whitebox = WhiteboxContract::new( + PRICE_AGGREGATOR_ADDRESS_EXPR, + multiversx_price_aggregator_sc::contract_obj, + ); + let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); + + let mut set_state_step = SetStateStep::new() + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) + .block_timestamp(100); + + let mut oracles = Vec::new(); + for i in 1..=NR_ORACLES { + let oracle_address_expr = format!("address:oracle{i}"); + let oracle_address = AddressValue::from(oracle_address_expr.as_str()); + + set_state_step = set_state_step.put_account( + oracle_address_expr.as_str(), + Account::new().nonce(1).balance(STAKE_AMOUNT), + ); + oracles.push(oracle_address); + } + + // init price aggregator + world.set_state_step(set_state_step).whitebox_deploy( + &price_aggregator_whitebox, + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(price_aggregator_code), + |sc| { + let mut oracle_args = MultiValueEncoded::new(); + for oracle_address in &oracles { + oracle_args.push(managed_address!(&oracle_address.to_address())); + } + + sc.init( + EgldOrEsdtTokenIdentifier::egld(), + managed_biguint!(STAKE_AMOUNT), + managed_biguint!(SLASH_AMOUNT), + SLASH_QUORUM, + SUBMISSION_COUNT, + oracle_args, + ) + }, + ); + + for oracle_address in &oracles { + world.whitebox_call( &price_aggregator_whitebox, ScCallStep::new() - .from(&oracles[0]) - .expect(TxExpect::user_error("str:Contract is paused")), - |sc| { - sc.submit( - managed_buffer!(EGLD_TICKER), - managed_buffer!(USD_TICKER), - 99, - managed_biguint!(100), - DECIMALS, - ) - }, - |r| r.assert_user_error("Contract is paused"), - ) - .whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new().from(OWNER_ADDRESS_EXPR), - |sc| sc.call_unpause_endpoint(), - ) - .whitebox_call_check( - &price_aggregator_whitebox, - ScCallStep::new().from(&oracles[0]).no_expect(), - |sc| { - sc.submit( - managed_buffer!(EGLD_TICKER), - managed_buffer!(USD_TICKER), - 10, - managed_biguint!(100), - DECIMALS, - ) - }, - |r| { - r.assert_user_error("First submission too old"); - }, - ) - .whitebox_call_check( - &price_aggregator_whitebox, - ScCallStep::new().from(&oracles[0]), - |sc| { - sc.submit( - managed_buffer!(EGLD_TICKER), - managed_buffer!(USD_TICKER), - 95, - managed_biguint!(100), - DECIMALS, - ) - }, - |r| { - r.assert_ok(); - }, + .from(oracle_address) + .egld_value(STAKE_AMOUNT), + |sc| sc.call_stake(), ); + } - world.whitebox_query_check( + // configure the number of decimals + world.whitebox_call( &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), |sc| { - let token_pair = TokenPair { - from: managed_buffer!(EGLD_TICKER), - to: managed_buffer!(USD_TICKER), - }; - assert_eq!( - sc.first_submission_timestamp(&token_pair).get(), - current_timestamp - ); - assert_eq!( - sc.last_submission_timestamp(&token_pair).get(), - current_timestamp - ); - - let submissions = sc.submissions().get(&token_pair).unwrap(); - assert_eq!(submissions.len(), 1); - assert_eq!( - submissions - .get(&managed_address!(&oracles[0].to_address())) - .unwrap(), - managed_biguint!(100) - ); - - assert_eq!( - sc.oracle_status() - .get(&managed_address!(&oracles[0].to_address())) - .unwrap(), - OracleStatus { - total_submissions: 1, - accepted_submissions: 1 - } - ); + sc.set_pair_decimals( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + DECIMALS, + ) }, - |r| r.assert_ok(), ); - world.whitebox_call_check( + // unpause + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), + |sc| sc.call_unpause_endpoint(), + ); + + // submit first + world.whitebox_call( &price_aggregator_whitebox, ScCallStep::new().from(&oracles[0]), |sc| { @@ -205,26 +317,72 @@ fn test_price_aggregator_submit() { managed_buffer!(EGLD_TICKER), managed_buffer!(USD_TICKER), 95, - managed_biguint!(100), + managed_biguint!(10_000), + DECIMALS, + ) + }, + ); + + let current_timestamp = 110; + world.set_state_step(SetStateStep::new().block_timestamp(current_timestamp)); + + // submit second + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[1]), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 101, + managed_biguint!(11_000), DECIMALS, ) }, - |r| r.assert_ok(), ); - world.whitebox_query_check( + // submit third + world.whitebox_call( &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[2]), |sc| { - assert_eq!( - sc.oracle_status() - .get(&managed_address!(&oracles[0].to_address())) - .unwrap(), - OracleStatus { - total_submissions: 2, - accepted_submissions: 1 - } - ); + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 105, + managed_biguint!(12_000), + DECIMALS, + ) }, - |r| r.assert_ok(), ); + + world.whitebox_query(&price_aggregator_whitebox, |sc| { + let result = sc + .latest_price_feed(managed_buffer!(EGLD_TICKER), managed_buffer!(USD_TICKER)) + .unwrap(); + + let (round_id, from, to, timestamp, price, decimals) = result.into_tuple(); + assert_eq!(round_id, 1); + assert_eq!(from, managed_buffer!(EGLD_TICKER)); + assert_eq!(to, managed_buffer!(USD_TICKER)); + assert_eq!(timestamp, current_timestamp); + assert_eq!(price, managed_biguint!(11_000)); + assert_eq!(decimals, DECIMALS); + + // submissions are deleted after round is created + let token_pair = TokenPair { from, to }; + let submissions = sc.submissions().get(&token_pair).unwrap(); + assert_eq!(submissions.len(), 0); + + let rounds = sc.rounds().get(&token_pair).unwrap(); + assert_eq!(rounds.len(), 1); + assert_eq!( + rounds.get(1), + TimestampedPrice { + timestamp, + price, + decimals + } + ); + }); } From 1291bea8b243fe23f1ba01f0af8a7d1fed0bf1d2 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 26 Jul 2023 19:35:39 +0300 Subject: [PATCH 05/54] and another test --- .../tests/price_aggregator_whitebox_test.rs | 134 +++++++++++++++++- 1 file changed, 133 insertions(+), 1 deletion(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs index 78ac2bbc17..a9f8772abb 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs @@ -1,7 +1,7 @@ use multiversx_price_aggregator_sc::{ price_aggregator_data::{OracleStatus, TimestampedPrice, TokenPair}, staking::EndpointWrappers as StakingEndpointWrappers, - PriceAggregator, + PriceAggregator, MAX_ROUND_DURATION_SECONDS, }; use multiversx_sc::types::{EgldOrEsdtTokenIdentifier, MultiValueEncoded}; use multiversx_sc_modules::pause::EndpointWrappers as PauseEndpointWrappers; @@ -34,6 +34,138 @@ fn world() -> ScenarioWorld { blockchain } +#[test] +fn test_price_aggregator_discarded_round() { + // setup + let mut world = world(); + let price_aggregator_whitebox = WhiteboxContract::new( + PRICE_AGGREGATOR_ADDRESS_EXPR, + multiversx_price_aggregator_sc::contract_obj, + ); + let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); + + let mut set_state_step = SetStateStep::new() + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) + .block_timestamp(100); + + let mut oracles = Vec::new(); + for i in 1..=NR_ORACLES { + let oracle_address_expr = format!("address:oracle{i}"); + let oracle_address = AddressValue::from(oracle_address_expr.as_str()); + + set_state_step = set_state_step.put_account( + oracle_address_expr.as_str(), + Account::new().nonce(1).balance(STAKE_AMOUNT), + ); + oracles.push(oracle_address); + } + + // init price aggregator + world.set_state_step(set_state_step).whitebox_deploy( + &price_aggregator_whitebox, + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(price_aggregator_code), + |sc| { + let mut oracle_args = MultiValueEncoded::new(); + for oracle_address in &oracles { + oracle_args.push(managed_address!(&oracle_address.to_address())); + } + + sc.init( + EgldOrEsdtTokenIdentifier::egld(), + managed_biguint!(STAKE_AMOUNT), + managed_biguint!(SLASH_AMOUNT), + SLASH_QUORUM, + SUBMISSION_COUNT, + oracle_args, + ) + }, + ); + + for oracle_address in &oracles { + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new() + .from(oracle_address) + .egld_value(STAKE_AMOUNT), + |sc| sc.call_stake(), + ); + } + + // configure the number of decimals + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), + |sc| { + sc.set_pair_decimals( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + DECIMALS, + ) + }, + ); + + // unpause + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), + |sc| sc.call_unpause_endpoint(), + ); + + // submit first + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[0]), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 95, + managed_biguint!(10_000), + DECIMALS, + ) + }, + ); + + let current_timestamp = 100 + MAX_ROUND_DURATION_SECONDS + 1; + world.set_state_step(SetStateStep::new().block_timestamp(current_timestamp)); + + // submit second - this will discard the previous submission + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[1]), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + current_timestamp - 1, + managed_biguint!(11_000), + DECIMALS, + ) + }, + ); + + world.whitebox_query(&price_aggregator_whitebox, |sc| { + let token_pair = TokenPair { + from: managed_buffer!(EGLD_TICKER), + to: managed_buffer!(USD_TICKER), + }; + let submissions = sc.submissions().get(&token_pair).unwrap(); + assert_eq!(submissions.len(), 1); + assert_eq!( + submissions + .get(&managed_address!(&oracles[1].to_address())) + .unwrap(), + managed_biguint!(11_000) + ); + }); +} + +#[test] +fn test_price_aggregator_slashing() {} + #[test] fn test_price_aggregator_submit() { // setup From f7ce64c27130528cc0c66a65771647dbc6840511 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 26 Jul 2023 20:11:59 +0300 Subject: [PATCH 06/54] fully migrate price aggregation with nnew whitebox syntax --- .../tests/price_agg_setup/mod.rs | 121 ----- .../price-aggregator/tests/price_agg_tests.rs | 222 --------- .../tests/price_aggregator_whitebox_test.rs | 439 ++++++++---------- 3 files changed, 200 insertions(+), 582 deletions(-) delete mode 100644 contracts/core/price-aggregator/tests/price_agg_setup/mod.rs delete mode 100644 contracts/core/price-aggregator/tests/price_agg_tests.rs diff --git a/contracts/core/price-aggregator/tests/price_agg_setup/mod.rs b/contracts/core/price-aggregator/tests/price_agg_setup/mod.rs deleted file mode 100644 index 819baa5fc4..0000000000 --- a/contracts/core/price-aggregator/tests/price_agg_setup/mod.rs +++ /dev/null @@ -1,121 +0,0 @@ -#![allow(deprecated)] // TODO: migrate tests - -use multiversx_price_aggregator_sc::{staking::StakingModule, PriceAggregator}; -use multiversx_sc::types::{Address, EgldOrEsdtTokenIdentifier, MultiValueEncoded}; -use multiversx_sc_modules::pause::PauseModule; -use multiversx_sc_scenario::{ - managed_address, managed_biguint, managed_buffer, rust_biguint, - testing_framework::{BlockchainStateWrapper, ContractObjWrapper, TxResult}, - DebugApi, -}; - -pub const NR_ORACLES: usize = 4; -pub const SUBMISSION_COUNT: usize = 3; -pub const DECIMALS: u8 = 0; -pub static EGLD_TICKER: &[u8] = b"EGLD"; -pub static USD_TICKER: &[u8] = b"USDC"; - -pub const STAKE_AMOUNT: u64 = 20; -pub const SLASH_AMOUNT: u64 = 10; -pub const SLASH_QUORUM: usize = 2; - -pub struct PriceAggSetup -where - PriceAggObjBuilder: - 'static + Copy + Fn() -> multiversx_price_aggregator_sc::ContractObj, -{ - pub b_mock: BlockchainStateWrapper, - pub owner: Address, - pub oracles: Vec
, - pub price_agg: ContractObjWrapper< - multiversx_price_aggregator_sc::ContractObj, - PriceAggObjBuilder, - >, -} - -impl PriceAggSetup -where - PriceAggObjBuilder: - 'static + Copy + Fn() -> multiversx_price_aggregator_sc::ContractObj, -{ - pub fn new(builder: PriceAggObjBuilder) -> Self { - let rust_zero = rust_biguint!(0); - let mut b_mock = BlockchainStateWrapper::new(); - let owner = b_mock.create_user_account(&rust_zero); - - let mut oracles = Vec::new(); - for _ in 0..NR_ORACLES { - let oracle = b_mock.create_user_account(&rust_biguint!(STAKE_AMOUNT)); - oracles.push(oracle); - } - - let price_agg = - b_mock.create_sc_account(&rust_zero, Some(&owner), builder, "price_agg_path"); - - let current_timestamp = 100; - b_mock.set_block_timestamp(current_timestamp); - - // init price aggregator - b_mock - .execute_tx(&owner, &price_agg, &rust_zero, |sc| { - let mut oracle_args = MultiValueEncoded::new(); - for oracle in &oracles { - oracle_args.push(managed_address!(oracle)); - } - - sc.init( - EgldOrEsdtTokenIdentifier::egld(), - managed_biguint!(STAKE_AMOUNT), - managed_biguint!(SLASH_AMOUNT), - SLASH_QUORUM, - SUBMISSION_COUNT, - oracle_args, - ); - }) - .assert_ok(); - - for oracle in &oracles { - b_mock - .execute_tx(oracle, &price_agg, &rust_biguint!(STAKE_AMOUNT), |sc| { - sc.stake(); - }) - .assert_ok(); - } - - Self { - b_mock, - oracles, - owner, - price_agg, - } - } - - pub fn set_pair_decimals(&mut self, from: &[u8], to: &[u8], decimals: u8) { - self.b_mock - .execute_tx(&self.owner, &self.price_agg, &rust_biguint!(0), |sc| { - sc.set_pair_decimals(managed_buffer!(from), managed_buffer!(to), decimals); - }) - .assert_ok(); - } - - pub fn unpause(&mut self) { - self.b_mock - .execute_tx(&self.owner, &self.price_agg, &rust_biguint!(0), |sc| { - sc.unpause_endpoint(); - }) - .assert_ok(); - } - - pub fn submit(&mut self, oracle: &Address, timestamp: u64, price: u64) -> TxResult { - self.b_mock - .execute_tx(oracle, &self.price_agg, &rust_biguint!(0), |sc| { - sc.submit( - managed_buffer!(EGLD_TICKER), - managed_buffer!(USD_TICKER), - timestamp, - managed_biguint!(price), - DECIMALS, - ); - }) - } -} diff --git a/contracts/core/price-aggregator/tests/price_agg_tests.rs b/contracts/core/price-aggregator/tests/price_agg_tests.rs deleted file mode 100644 index 3a40450903..0000000000 --- a/contracts/core/price-aggregator/tests/price_agg_tests.rs +++ /dev/null @@ -1,222 +0,0 @@ -#![allow(deprecated)] // TODO: migrate tests - -use multiversx_price_aggregator_sc::{ - price_aggregator_data::{OracleStatus, TimestampedPrice, TokenPair}, - staking::StakingModule, - PriceAggregator, MAX_ROUND_DURATION_SECONDS, -}; -use multiversx_sc_scenario::{managed_address, managed_biguint, managed_buffer, rust_biguint}; - -mod price_agg_setup; -use price_agg_setup::*; - -#[test] -fn price_agg_submit_test() { - let mut pa_setup = PriceAggSetup::new(multiversx_price_aggregator_sc::contract_obj); - let current_timestamp = 100; - let oracles = pa_setup.oracles.clone(); - - // configure the number of decimals - pa_setup.set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS); - - // try submit while paused - pa_setup - .submit(&oracles[0], 99, 100) - .assert_user_error("Contract is paused"); - - // unpause - pa_setup.unpause(); - - // submit first timestamp too old - pa_setup - .submit(&oracles[0], 10, 100) - .assert_user_error("First submission too old"); - - // submit ok - pa_setup.submit(&oracles[0], 95, 100).assert_ok(); - - pa_setup - .b_mock - .execute_query(&pa_setup.price_agg, |sc| { - let token_pair = TokenPair { - from: managed_buffer!(EGLD_TICKER), - to: managed_buffer!(USD_TICKER), - }; - assert_eq!( - sc.first_submission_timestamp(&token_pair).get(), - current_timestamp - ); - assert_eq!( - sc.last_submission_timestamp(&token_pair).get(), - current_timestamp - ); - - let submissions = sc.submissions().get(&token_pair).unwrap(); - assert_eq!(submissions.len(), 1); - assert_eq!( - submissions.get(&managed_address!(&oracles[0])).unwrap(), - managed_biguint!(100) - ); - - assert_eq!( - sc.oracle_status() - .get(&managed_address!(&oracles[0])) - .unwrap(), - OracleStatus { - total_submissions: 1, - accepted_submissions: 1 - } - ); - }) - .assert_ok(); - - // first oracle submit again - submission not accepted - pa_setup.submit(&oracles[0], 95, 100).assert_ok(); - - pa_setup - .b_mock - .execute_query(&pa_setup.price_agg, |sc| { - assert_eq!( - sc.oracle_status() - .get(&managed_address!(&oracles[0])) - .unwrap(), - OracleStatus { - total_submissions: 2, - accepted_submissions: 1 - } - ); - }) - .assert_ok(); -} - -#[test] -fn price_agg_submit_round_ok_test() { - let mut pa_setup = PriceAggSetup::new(multiversx_price_aggregator_sc::contract_obj); - let oracles = pa_setup.oracles.clone(); - - // configure the number of decimals - pa_setup.set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS); - - // unpause - pa_setup.unpause(); - - // submit first - pa_setup.submit(&oracles[0], 95, 10_000).assert_ok(); - - let current_timestamp = 110; - pa_setup.b_mock.set_block_timestamp(current_timestamp); - - // submit second - pa_setup.submit(&oracles[1], 101, 11_000).assert_ok(); - - // submit third - pa_setup.submit(&oracles[2], 105, 12_000).assert_ok(); - - pa_setup - .b_mock - .execute_query(&pa_setup.price_agg, |sc| { - let result = sc - .latest_price_feed(managed_buffer!(EGLD_TICKER), managed_buffer!(USD_TICKER)) - .unwrap(); - - let (round_id, from, to, timestamp, price, decimals) = result.into_tuple(); - assert_eq!(round_id, 1); - assert_eq!(from, managed_buffer!(EGLD_TICKER)); - assert_eq!(to, managed_buffer!(USD_TICKER)); - assert_eq!(timestamp, current_timestamp); - assert_eq!(price, managed_biguint!(11_000)); - assert_eq!(decimals, DECIMALS); - - // submissions are deleted after round is created - let token_pair = TokenPair { from, to }; - let submissions = sc.submissions().get(&token_pair).unwrap(); - assert_eq!(submissions.len(), 0); - - let rounds = sc.rounds().get(&token_pair).unwrap(); - assert_eq!(rounds.len(), 1); - assert_eq!( - rounds.get(1), - TimestampedPrice { - timestamp, - price, - decimals - } - ); - }) - .assert_ok(); -} - -#[test] -fn price_agg_discarded_round_test() { - let mut pa_setup = PriceAggSetup::new(multiversx_price_aggregator_sc::contract_obj); - let oracles = pa_setup.oracles.clone(); - - // configure the number of decimals - pa_setup.set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS); - - // unpause - pa_setup.unpause(); - - // submit first - pa_setup.submit(&oracles[0], 95, 10_000).assert_ok(); - - let current_timestamp = 100 + MAX_ROUND_DURATION_SECONDS + 1; - pa_setup.b_mock.set_block_timestamp(current_timestamp); - - // submit second - this will discard the previous submission - pa_setup - .submit(&oracles[1], current_timestamp - 1, 11_000) - .assert_ok(); - - pa_setup - .b_mock - .execute_query(&pa_setup.price_agg, |sc| { - let token_pair = TokenPair { - from: managed_buffer!(EGLD_TICKER), - to: managed_buffer!(USD_TICKER), - }; - let submissions = sc.submissions().get(&token_pair).unwrap(); - assert_eq!(submissions.len(), 1); - assert_eq!( - submissions.get(&managed_address!(&oracles[1])).unwrap(), - managed_biguint!(11_000) - ); - }) - .assert_ok(); -} - -#[test] -fn price_agg_slashing_test() { - let rust_zero = rust_biguint!(0); - let mut pa_setup = PriceAggSetup::new(multiversx_price_aggregator_sc::contract_obj); - let oracles = pa_setup.oracles.clone(); - - // unpause - pa_setup.unpause(); - - pa_setup - .b_mock - .execute_tx(&oracles[0], &pa_setup.price_agg, &rust_zero, |sc| { - sc.vote_slash_member(managed_address!(&oracles[1])); - }) - .assert_ok(); - - pa_setup - .b_mock - .execute_tx(&oracles[2], &pa_setup.price_agg, &rust_zero, |sc| { - sc.vote_slash_member(managed_address!(&oracles[1])); - }) - .assert_ok(); - - pa_setup - .b_mock - .execute_tx(&oracles[0], &pa_setup.price_agg, &rust_zero, |sc| { - sc.slash_member(managed_address!(&oracles[1])); - }) - .assert_ok(); - - // oracle 1 try submit after slashing - pa_setup - .submit(&oracles[1], 95, 10_000) - .assert_user_error("only oracles allowed"); -} diff --git a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs index a9f8772abb..a2ab56a22a 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs @@ -34,198 +34,13 @@ fn world() -> ScenarioWorld { blockchain } -#[test] -fn test_price_aggregator_discarded_round() { - // setup - let mut world = world(); - let price_aggregator_whitebox = WhiteboxContract::new( - PRICE_AGGREGATOR_ADDRESS_EXPR, - multiversx_price_aggregator_sc::contract_obj, - ); - let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); - - let mut set_state_step = SetStateStep::new() - .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) - .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) - .block_timestamp(100); - - let mut oracles = Vec::new(); - for i in 1..=NR_ORACLES { - let oracle_address_expr = format!("address:oracle{i}"); - let oracle_address = AddressValue::from(oracle_address_expr.as_str()); - - set_state_step = set_state_step.put_account( - oracle_address_expr.as_str(), - Account::new().nonce(1).balance(STAKE_AMOUNT), - ); - oracles.push(oracle_address); - } - - // init price aggregator - world.set_state_step(set_state_step).whitebox_deploy( - &price_aggregator_whitebox, - ScDeployStep::new() - .from(OWNER_ADDRESS_EXPR) - .code(price_aggregator_code), - |sc| { - let mut oracle_args = MultiValueEncoded::new(); - for oracle_address in &oracles { - oracle_args.push(managed_address!(&oracle_address.to_address())); - } - - sc.init( - EgldOrEsdtTokenIdentifier::egld(), - managed_biguint!(STAKE_AMOUNT), - managed_biguint!(SLASH_AMOUNT), - SLASH_QUORUM, - SUBMISSION_COUNT, - oracle_args, - ) - }, - ); - - for oracle_address in &oracles { - world.whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new() - .from(oracle_address) - .egld_value(STAKE_AMOUNT), - |sc| sc.call_stake(), - ); - } - - // configure the number of decimals - world.whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new().from(OWNER_ADDRESS_EXPR), - |sc| { - sc.set_pair_decimals( - managed_buffer!(EGLD_TICKER), - managed_buffer!(USD_TICKER), - DECIMALS, - ) - }, - ); - - // unpause - world.whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new().from(OWNER_ADDRESS_EXPR), - |sc| sc.call_unpause_endpoint(), - ); - - // submit first - world.whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new().from(&oracles[0]), - |sc| { - sc.submit( - managed_buffer!(EGLD_TICKER), - managed_buffer!(USD_TICKER), - 95, - managed_biguint!(10_000), - DECIMALS, - ) - }, - ); - - let current_timestamp = 100 + MAX_ROUND_DURATION_SECONDS + 1; - world.set_state_step(SetStateStep::new().block_timestamp(current_timestamp)); - - // submit second - this will discard the previous submission - world.whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new().from(&oracles[1]), - |sc| { - sc.submit( - managed_buffer!(EGLD_TICKER), - managed_buffer!(USD_TICKER), - current_timestamp - 1, - managed_biguint!(11_000), - DECIMALS, - ) - }, - ); - - world.whitebox_query(&price_aggregator_whitebox, |sc| { - let token_pair = TokenPair { - from: managed_buffer!(EGLD_TICKER), - to: managed_buffer!(USD_TICKER), - }; - let submissions = sc.submissions().get(&token_pair).unwrap(); - assert_eq!(submissions.len(), 1); - assert_eq!( - submissions - .get(&managed_address!(&oracles[1].to_address())) - .unwrap(), - managed_biguint!(11_000) - ); - }); -} - -#[test] -fn test_price_aggregator_slashing() {} - #[test] fn test_price_aggregator_submit() { - // setup - let mut world = world(); - let current_timestamp = 100; + let (mut world, oracles) = setup(); let price_aggregator_whitebox = WhiteboxContract::new( PRICE_AGGREGATOR_ADDRESS_EXPR, multiversx_price_aggregator_sc::contract_obj, ); - let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); - - let mut set_state_step = SetStateStep::new() - .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) - .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) - .block_timestamp(100); - - let mut oracles = Vec::new(); - for i in 1..=NR_ORACLES { - let oracle_address_expr = format!("address:oracle{i}"); - let oracle_address = AddressValue::from(oracle_address_expr.as_str()); - - set_state_step = set_state_step.put_account( - oracle_address_expr.as_str(), - Account::new().nonce(1).balance(STAKE_AMOUNT), - ); - oracles.push(oracle_address); - } - - // init price aggregator - world.set_state_step(set_state_step).whitebox_deploy( - &price_aggregator_whitebox, - ScDeployStep::new() - .from(OWNER_ADDRESS_EXPR) - .code(price_aggregator_code), - |sc| { - let mut oracle_args = MultiValueEncoded::new(); - for oracle_address in &oracles { - oracle_args.push(managed_address!(&oracle_address.to_address())); - } - - sc.init( - EgldOrEsdtTokenIdentifier::egld(), - managed_biguint!(STAKE_AMOUNT), - managed_biguint!(SLASH_AMOUNT), - SLASH_QUORUM, - SUBMISSION_COUNT, - oracle_args, - ) - }, - ); - - for oracle_address in &oracles { - world.whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new() - .from(oracle_address) - .egld_value(STAKE_AMOUNT), - |sc| sc.call_stake(), - ); - } // configure the number of decimals world.whitebox_call( @@ -298,6 +113,7 @@ fn test_price_aggregator_submit() { }, ); + let current_timestamp = 100; world.whitebox_query(&price_aggregator_whitebox, |sc| { let token_pair = TokenPair { from: managed_buffer!(EGLD_TICKER), @@ -362,63 +178,11 @@ fn test_price_aggregator_submit() { #[test] fn test_price_aggregator_submit_round_ok() { - // setup - let mut world = world(); + let (mut world, oracles) = setup(); let price_aggregator_whitebox = WhiteboxContract::new( PRICE_AGGREGATOR_ADDRESS_EXPR, multiversx_price_aggregator_sc::contract_obj, ); - let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); - - let mut set_state_step = SetStateStep::new() - .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) - .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) - .block_timestamp(100); - - let mut oracles = Vec::new(); - for i in 1..=NR_ORACLES { - let oracle_address_expr = format!("address:oracle{i}"); - let oracle_address = AddressValue::from(oracle_address_expr.as_str()); - - set_state_step = set_state_step.put_account( - oracle_address_expr.as_str(), - Account::new().nonce(1).balance(STAKE_AMOUNT), - ); - oracles.push(oracle_address); - } - - // init price aggregator - world.set_state_step(set_state_step).whitebox_deploy( - &price_aggregator_whitebox, - ScDeployStep::new() - .from(OWNER_ADDRESS_EXPR) - .code(price_aggregator_code), - |sc| { - let mut oracle_args = MultiValueEncoded::new(); - for oracle_address in &oracles { - oracle_args.push(managed_address!(&oracle_address.to_address())); - } - - sc.init( - EgldOrEsdtTokenIdentifier::egld(), - managed_biguint!(STAKE_AMOUNT), - managed_biguint!(SLASH_AMOUNT), - SLASH_QUORUM, - SUBMISSION_COUNT, - oracle_args, - ) - }, - ); - - for oracle_address in &oracles { - world.whitebox_call( - &price_aggregator_whitebox, - ScCallStep::new() - .from(oracle_address) - .egld_value(STAKE_AMOUNT), - |sc| sc.call_stake(), - ); - } // configure the number of decimals world.whitebox_call( @@ -518,3 +282,200 @@ fn test_price_aggregator_submit_round_ok() { ); }); } + +#[test] +fn test_price_aggregator_discarded_round() { + let (mut world, oracles) = setup(); + let price_aggregator_whitebox = WhiteboxContract::new( + PRICE_AGGREGATOR_ADDRESS_EXPR, + multiversx_price_aggregator_sc::contract_obj, + ); + + // configure the number of decimals + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), + |sc| { + sc.set_pair_decimals( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + DECIMALS, + ) + }, + ); + + // unpause + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), + |sc| sc.call_unpause_endpoint(), + ); + + // submit first + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[0]), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 95, + managed_biguint!(10_000), + DECIMALS, + ) + }, + ); + + let current_timestamp = 100 + MAX_ROUND_DURATION_SECONDS + 1; + world.set_state_step(SetStateStep::new().block_timestamp(current_timestamp)); + + // submit second - this will discard the previous submission + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[1]), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + current_timestamp - 1, + managed_biguint!(11_000), + DECIMALS, + ) + }, + ); + + world.whitebox_query(&price_aggregator_whitebox, |sc| { + let token_pair = TokenPair { + from: managed_buffer!(EGLD_TICKER), + to: managed_buffer!(USD_TICKER), + }; + let submissions = sc.submissions().get(&token_pair).unwrap(); + assert_eq!(submissions.len(), 1); + assert_eq!( + submissions + .get(&managed_address!(&oracles[1].to_address())) + .unwrap(), + managed_biguint!(11_000) + ); + }); +} + +#[test] +fn test_price_aggregator_slashing() { + let (mut world, oracles) = setup(); + let price_aggregator_whitebox = WhiteboxContract::new( + PRICE_AGGREGATOR_ADDRESS_EXPR, + multiversx_price_aggregator_sc::contract_obj, + ); + + // unpause + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new().from(OWNER_ADDRESS_EXPR), + |sc| sc.call_unpause_endpoint(), + ); + + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new() + .from(&oracles[0]) + .argument(BytesValue::from(oracles[1].to_address().as_bytes())), + |sc| sc.call_vote_slash_member(), + ); + + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new() + .from(&oracles[2]) + .argument(BytesValue::from(oracles[1].to_address().as_bytes())), + |sc| sc.call_vote_slash_member(), + ); + + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new() + .from(&oracles[0]) + .argument(BytesValue::from(oracles[1].to_address().as_bytes())), + |sc| sc.call_slash_member(), + ); + + // oracle 1 try submit after slashing + world.whitebox_call_check( + &price_aggregator_whitebox, + ScCallStep::new().from(&oracles[1]).no_expect(), + |sc| { + sc.submit( + managed_buffer!(EGLD_TICKER), + managed_buffer!(USD_TICKER), + 95, + managed_biguint!(10_000), + DECIMALS, + ) + }, + |r| { + r.assert_user_error("only oracles allowed"); + }, + ); +} + +fn setup() -> (ScenarioWorld, Vec) { + // setup + let mut world = world(); + let price_aggregator_whitebox = WhiteboxContract::new( + PRICE_AGGREGATOR_ADDRESS_EXPR, + multiversx_price_aggregator_sc::contract_obj, + ); + let price_aggregator_code = world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); + + let mut set_state_step = SetStateStep::new() + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) + .block_timestamp(100); + + let mut oracles = Vec::new(); + for i in 1..=NR_ORACLES { + let oracle_address_expr = format!("address:oracle{i}"); + let oracle_address = AddressValue::from(oracle_address_expr.as_str()); + + set_state_step = set_state_step.put_account( + oracle_address_expr.as_str(), + Account::new().nonce(1).balance(STAKE_AMOUNT), + ); + oracles.push(oracle_address); + } + + // init price aggregator + world.set_state_step(set_state_step).whitebox_deploy( + &price_aggregator_whitebox, + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(price_aggregator_code), + |sc| { + let mut oracle_args = MultiValueEncoded::new(); + for oracle_address in &oracles { + oracle_args.push(managed_address!(&oracle_address.to_address())); + } + + sc.init( + EgldOrEsdtTokenIdentifier::egld(), + managed_biguint!(STAKE_AMOUNT), + managed_biguint!(SLASH_AMOUNT), + SLASH_QUORUM, + SUBMISSION_COUNT, + oracle_args, + ) + }, + ); + + for oracle_address in &oracles { + world.whitebox_call( + &price_aggregator_whitebox, + ScCallStep::new() + .from(oracle_address) + .egld_value(STAKE_AMOUNT), + |sc| sc.call_stake(), + ); + } + + (world, oracles) +} From 80b6e6bf81e9ad9d6c8cc35cbcff93ee03bcae6b Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 14:01:00 +0300 Subject: [PATCH 07/54] initial setup for whitebox testing --- .../multisig/tests/multisig_whitebox_test.rs | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 contracts/examples/multisig/tests/multisig_whitebox_test.rs diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs new file mode 100644 index 0000000000..9edc25c9be --- /dev/null +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -0,0 +1,105 @@ +use multisig::{multisig_perform::MultisigPerformModule, user_role::UserRole, Multisig}; +use multiversx_sc::types::{Address, BoxedBytes, CodeMetadata, ManagedVec}; +use multiversx_sc_scenario::{ + managed_address, + scenario_model::{Account, AddressValue, ScDeployStep, SetStateStep}, + ScenarioWorld, WhiteboxContract, +}; + +const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; +const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; +const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; +const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; +const QUORUM_SIZE: usize = 1; +const EGLD_TOKEN_ID: &[u8] = b"EGLD"; + +type RustBigUint = num_bigint::BigUint; + +pub enum ActionRaw { + _Nothing, + AddBoardMember(Address), + AddProposer(Address), + RemoveUser(Address), + ChangeQuorum(usize), + SendTransferExecute(CallActionDataRaw), + SendAsyncCall(CallActionDataRaw), + SCDeployFromSource { + amount: RustBigUint, + source: Address, + code_metadata: CodeMetadata, + arguments: Vec, + }, + SCUpgradeFromSource { + sc_address: Address, + amount: RustBigUint, + source: Address, + code_metadata: CodeMetadata, + arguments: Vec, + }, +} + +pub struct CallActionDataRaw { + pub to: Address, + pub egld_amount: RustBigUint, + pub endpoint_name: BoxedBytes, + pub arguments: Vec, +} + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/multisig"); + + blockchain.register_contract(MULTISIG_PATH_EXPR, multisig::ContractBuilder); + blockchain +} + +fn setup() -> ScenarioWorld { + // setup + let mut world = world(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + let multisig_code = world.code_expression(MULTISIG_PATH_EXPR); + + world.set_state_step( + SetStateStep::new() + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, MULTISIG_ADDRESS_EXPR) + .put_account( + PROPOSER_ADDRESS_EXPR, + Account::new().nonce(1).balance(100_000_000u64), + ) + .put_account(BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + // init multisig + world.whitebox_deploy( + &multisig_whitebox, + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(multisig_code), + |sc| { + let mut board_members = ManagedVec::new(); + board_members.push(managed_address!(&address_expr_to_address( + BOARD_MEMBER_ADDRESS_EXPR + ))); + + sc.init(QUORUM_SIZE, board_members.into()); + sc.change_user_role( + 0, + managed_address!(&address_expr_to_address(PROPOSER_ADDRESS_EXPR)), + UserRole::Proposer, + ); + }, + ); + + world +} + +#[test] +fn test_init() { + let mut world = setup(); +} + +fn address_expr_to_address(address_expr: &str) -> Address { + AddressValue::from(address_expr).to_address() +} From e024a21be81c91f8830dbb6786b363ba2b4f7b46 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 14:40:03 +0300 Subject: [PATCH 08/54] first migrated test --- .../multisig/tests/multisig_whitebox_test.rs | 181 +++++++++++++++++- 1 file changed, 175 insertions(+), 6 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index 9edc25c9be..af594b1b4a 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -1,9 +1,20 @@ -use multisig::{multisig_perform::MultisigPerformModule, user_role::UserRole, Multisig}; -use multiversx_sc::types::{Address, BoxedBytes, CodeMetadata, ManagedVec}; +use std::borrow::Borrow; + +use multisig::{ + multisig_perform::MultisigPerformModule, multisig_propose::MultisigProposeModule, + user_role::UserRole, Multisig, +}; +use multiversx_sc::{ + api::ManagedTypeApi, + codec::multi_types::OptionalValue, + types::{ + Address, BigUint, BoxedBytes, CodeMetadata, ManagedAddress, ManagedBuffer, ManagedVec, + }, +}; use multiversx_sc_scenario::{ - managed_address, - scenario_model::{Account, AddressValue, ScDeployStep, SetStateStep}, - ScenarioWorld, WhiteboxContract, + managed_address, rust_biguint, + scenario_model::{Account, AddressValue, ScCallStep, ScDeployStep, SetStateStep}, + DebugApi, ScenarioWorld, WhiteboxContract, }; const OWNER_ADDRESS_EXPR: &str = "address:owner"; @@ -12,7 +23,7 @@ const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; const QUORUM_SIZE: usize = 1; -const EGLD_TOKEN_ID: &[u8] = b"EGLD"; +// const EGLD_TOKEN_ID: &[u8] = b"EGLD"; type RustBigUint = num_bigint::BigUint; @@ -97,9 +108,167 @@ fn setup() -> ScenarioWorld { #[test] fn test_init() { + setup(); +} + +fn call_propose(world: &mut ScenarioWorld, action: ActionRaw) -> usize { + let egld_amount = match &action { + ActionRaw::SendTransferExecute(call_data) => call_data.egld_amount.clone(), + ActionRaw::SendAsyncCall(call_data) => call_data.egld_amount.clone(), + ActionRaw::SCDeployFromSource { amount, .. } => amount.clone(), + ActionRaw::SCUpgradeFromSource { amount, .. } => amount.clone(), + _ => rust_biguint!(0), + }; + let amount_bytes = egld_amount.to_bytes_be(); + let amount_rust_biguint = num_bigint::BigUint::from_bytes_be(amount_bytes.as_slice()); + + let mut action_id = 0; + + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .egld_value(amount_rust_biguint), + |sc| { + action_id = match action { + ActionRaw::_Nothing => panic!("Invalid action"), + ActionRaw::AddBoardMember(addr) => { + sc.propose_add_board_member(managed_address!(&addr)) + }, + ActionRaw::AddProposer(addr) => sc.propose_add_proposer(managed_address!(&addr)), + ActionRaw::RemoveUser(addr) => sc.propose_remove_user(managed_address!(&addr)), + ActionRaw::ChangeQuorum(new_size) => sc.propose_change_quorum(new_size), + ActionRaw::SendTransferExecute(call_data) => { + let opt_endpoint = if call_data.endpoint_name.is_empty() { + OptionalValue::None + } else { + OptionalValue::Some(ManagedBuffer::new_from_bytes( + call_data.endpoint_name.as_slice(), + )) + }; + + sc.propose_transfer_execute( + managed_address!(&call_data.to), + BigUint::from_bytes_be(&call_data.egld_amount.to_bytes_be()), + opt_endpoint, + boxed_bytes_vec_to_managed(call_data.arguments).into(), + ) + }, + ActionRaw::SendAsyncCall(call_data) => { + let opt_endpoint = if call_data.endpoint_name.is_empty() { + OptionalValue::None + } else { + OptionalValue::Some(ManagedBuffer::new_from_bytes( + call_data.endpoint_name.as_slice(), + )) + }; + + sc.propose_async_call( + managed_address!(&call_data.to), + BigUint::from_bytes_be(&call_data.egld_amount.to_bytes_be()), + opt_endpoint, + boxed_bytes_vec_to_managed(call_data.arguments).into(), + ) + }, + ActionRaw::SCDeployFromSource { + amount, + source, + code_metadata, + arguments, + } => sc.propose_sc_deploy_from_source( + BigUint::from_bytes_be(&amount.to_bytes_be()), + managed_address!(&source), + code_metadata, + boxed_bytes_vec_to_managed(arguments).into(), + ), + ActionRaw::SCUpgradeFromSource { + sc_address, + amount, + source, + code_metadata, + arguments, + } => sc.propose_sc_upgrade_from_source( + managed_address!(&sc_address), + BigUint::from_bytes_be(&amount.to_bytes_be()), + managed_address!(&source), + code_metadata, + boxed_bytes_vec_to_managed(arguments).into(), + ), + } + }, + ); + + action_id +} + +#[test] +fn test_add_board_member() { let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; + world.set_state_step( + // change to const + SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + world.whitebox_query(&multisig_whitebox, |sc| { + let user_role = sc.user_role(managed_address!(&address_expr_to_address( + NEW_BOARD_MEMBER_ADDRESS_EXPR + ))); + assert_eq!(user_role, UserRole::None); + }); + + let action_id = call_propose( + &mut world, + ActionRaw::AddBoardMember(address_expr_to_address(NEW_BOARD_MEMBER_ADDRESS_EXPR)), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + world.whitebox_query(&multisig_whitebox, |sc| { + let user_role = sc.user_role(managed_address!(&address_expr_to_address( + NEW_BOARD_MEMBER_ADDRESS_EXPR + ))); + assert_eq!(user_role, UserRole::BoardMember); + + let board_members = sc.get_all_board_members().to_vec(); + assert_eq!( + (board_members.get(0).borrow() as &ManagedAddress).clone(), + managed_address!(&address_expr_to_address(BOARD_MEMBER_ADDRESS_EXPR)) + ); + assert_eq!( + (board_members.get(1).borrow() as &ManagedAddress).clone(), + managed_address!(&address_expr_to_address(NEW_BOARD_MEMBER_ADDRESS_EXPR)) + ); + }); } fn address_expr_to_address(address_expr: &str) -> Address { AddressValue::from(address_expr).to_address() } + +fn boxed_bytes_vec_to_managed( + raw_vec: Vec, +) -> ManagedVec> { + let mut managed = ManagedVec::new(); + for elem in raw_vec { + managed.push(ManagedBuffer::new_from_bytes(elem.as_slice())); + } + + managed +} From 03e63a2693befea82266b3ec7c1dca3693345bb7 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 14:47:22 +0300 Subject: [PATCH 09/54] migrated another test --- .../multisig/tests/multisig_whitebox_test.rs | 57 ++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index af594b1b4a..9333731427 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -210,7 +210,6 @@ fn test_add_board_member() { const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; world.set_state_step( - // change to const SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), ); @@ -241,6 +240,7 @@ fn test_add_board_member() { ); world.whitebox_query(&multisig_whitebox, |sc| { + // check role after let user_role = sc.user_role(managed_address!(&address_expr_to_address( NEW_BOARD_MEMBER_ADDRESS_EXPR ))); @@ -258,6 +258,61 @@ fn test_add_board_member() { }); } +#[test] +fn test_add_proposer() { + let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + const NEW_PROPOSER_ADDRESS_EXPR: &str = "address:new-proposer"; + world.set_state_step( + SetStateStep::new().put_account(NEW_PROPOSER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + world.whitebox_query(&multisig_whitebox, |sc| { + let user_role = sc.user_role(managed_address!(&address_expr_to_address( + NEW_PROPOSER_ADDRESS_EXPR + ))); + assert_eq!(user_role, UserRole::None); + }); + + let action_id = call_propose( + &mut world, + ActionRaw::AddProposer(address_expr_to_address(NEW_PROPOSER_ADDRESS_EXPR)), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + world.whitebox_query(&multisig_whitebox, |sc| { + // check role after + let user_role = sc.user_role(managed_address!(&address_expr_to_address( + NEW_PROPOSER_ADDRESS_EXPR + ))); + assert_eq!(user_role, UserRole::Proposer); + + let proposers = sc.get_all_proposers().to_vec(); + assert_eq!( + (proposers.get(0).borrow() as &ManagedAddress).clone(), + managed_address!(&address_expr_to_address(PROPOSER_ADDRESS_EXPR)) + ); + assert_eq!( + (proposers.get(1).borrow() as &ManagedAddress).clone(), + managed_address!(&address_expr_to_address(NEW_PROPOSER_ADDRESS_EXPR)) + ); + }); +} + fn address_expr_to_address(address_expr: &str) -> Address { AddressValue::from(address_expr).to_address() } From 54739aa8d353bdbb6300204154aee95f67f9fadd Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 14:53:03 +0300 Subject: [PATCH 10/54] prepare remaining tests --- .../tests/multisig_blackbox_setup/mod.rs | 2 + .../tests/multisig_whitebox_legacy_test.rs | 97 +------------------ .../multisig/tests/multisig_whitebox_test.rs | 23 +++++ 3 files changed, 27 insertions(+), 95 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_setup/mod.rs b/contracts/examples/multisig/tests/multisig_blackbox_setup/mod.rs index aec35169de..ce58e096df 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_setup/mod.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_setup/mod.rs @@ -1,3 +1,5 @@ +#![allow(dead_code)] + use multisig::{ multisig_perform::MultisigPerformModule, multisig_propose::MultisigProposeModule, user_role::UserRole, Multisig, diff --git a/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs index 58bfd88a06..1ce34317f4 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs @@ -1,11 +1,9 @@ #![allow(deprecated)] // TODO: migrate tests -use std::borrow::Borrow; - use multisig::user_role::UserRole; use multisig_blackbox_setup::{CallActionDataRaw, MultisigSetup}; -use multiversx_sc::types::{BoxedBytes, CodeMetadata, ManagedAddress}; -use multiversx_sc_scenario::{managed_address, managed_biguint, rust_biguint, DebugApi}; +use multiversx_sc::types::{BoxedBytes, CodeMetadata}; +use multiversx_sc_scenario::{managed_address, managed_biguint, rust_biguint}; mod multisig_blackbox_setup; use adder::Adder; @@ -14,97 +12,6 @@ use multisig::Multisig; use crate::multisig_blackbox_setup::{ActionRaw, EGLD_TOKEN_ID}; -#[test] -fn init_test() { - let _ = MultisigSetup::new(multisig::contract_obj); -} - -#[test] -fn add_board_member_test() { - let rust_zero = rust_biguint!(0); - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - let new_board_member_addr = ms_setup.b_mock.create_user_account(&rust_zero); - - ms_setup - .b_mock - .execute_query(&ms_setup.ms_wrapper, |sc| { - // check role before - let user_role = sc.user_role(managed_address!(&new_board_member_addr)); - assert_eq!(user_role, UserRole::None); - }) - .assert_ok(); - - let (action_id, tx_result) = - ms_setup.call_propose(ActionRaw::AddBoardMember(new_board_member_addr.clone())); - tx_result.assert_ok(); - - ms_setup.call_sign(action_id).assert_ok(); - ms_setup.call_perform_action(action_id).assert_ok(); - - let prev_board_memeber_addr = ms_setup.board_member_address.clone(); - ms_setup - .b_mock - .execute_query(&ms_setup.ms_wrapper, |sc| { - // check role after - let user_role = sc.user_role(managed_address!(&new_board_member_addr)); - assert_eq!(user_role, UserRole::BoardMember); - - let board_members = sc.get_all_board_members().to_vec(); - assert_eq!( - (board_members.get(0).borrow() as &ManagedAddress).clone(), - managed_address!(&prev_board_memeber_addr) - ); - assert_eq!( - (board_members.get(1).borrow() as &ManagedAddress).clone(), - managed_address!(&new_board_member_addr) - ); - }) - .assert_ok(); -} - -#[test] -fn add_proposer_test() { - let rust_zero = rust_biguint!(0); - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - let new_proposer_addr = ms_setup.b_mock.create_user_account(&rust_zero); - - ms_setup - .b_mock - .execute_query(&ms_setup.ms_wrapper, |sc| { - // check role before - let user_role = sc.user_role(managed_address!(&new_proposer_addr)); - assert_eq!(user_role, UserRole::None); - }) - .assert_ok(); - - let (action_id, tx_result) = - ms_setup.call_propose(ActionRaw::AddProposer(new_proposer_addr.clone())); - tx_result.assert_ok(); - - ms_setup.call_sign(action_id).assert_ok(); - ms_setup.call_perform_action(action_id).assert_ok(); - - let prev_proposer_addr = ms_setup.proposer_address.clone(); - ms_setup - .b_mock - .execute_query(&ms_setup.ms_wrapper, |sc| { - // check role after - let user_role = sc.user_role(managed_address!(&new_proposer_addr)); - assert_eq!(user_role, UserRole::Proposer); - - let proposers = sc.get_all_proposers().to_vec(); - assert_eq!( - (proposers.get(0).borrow() as &ManagedAddress).clone(), - managed_address!(&prev_proposer_addr) - ); - assert_eq!( - (proposers.get(1).borrow() as &ManagedAddress).clone(), - managed_address!(&new_proposer_addr) - ); - }) - .assert_ok(); -} - #[test] fn remove_proposer_test() { let mut ms_setup = MultisigSetup::new(multisig::contract_obj); diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index 9333731427..4e7100e3ef 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -214,6 +214,7 @@ fn test_add_board_member() { ); world.whitebox_query(&multisig_whitebox, |sc| { + // check role before let user_role = sc.user_role(managed_address!(&address_expr_to_address( NEW_BOARD_MEMBER_ADDRESS_EXPR ))); @@ -269,6 +270,7 @@ fn test_add_proposer() { ); world.whitebox_query(&multisig_whitebox, |sc| { + // check role before let user_role = sc.user_role(managed_address!(&address_expr_to_address( NEW_PROPOSER_ADDRESS_EXPR ))); @@ -313,6 +315,27 @@ fn test_add_proposer() { }); } +#[test] +fn test_remove_proposer() {} + +#[test] +fn test_try_remove_all_board_members() {} + +#[test] +fn test_change_quorum() {} + +#[test] +fn test_transfer_execute_to_user() {} + +#[test] +fn test_transfer_execute_sc_all() {} + +#[test] +fn test_async_call_to_sc() {} + +#[test] +fn test_deploy_and_upgrade_from_source() {} + fn address_expr_to_address(address_expr: &str) -> Address { AddressValue::from(address_expr).to_address() } From 5480455ee4fd3dace7046b98ea1709661da33b8d Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 14:58:59 +0300 Subject: [PATCH 11/54] another test migrated --- .../multisig/tests/multisig_whitebox_test.rs | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index 4e7100e3ef..462ed2d57d 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -316,7 +316,48 @@ fn test_add_proposer() { } #[test] -fn test_remove_proposer() {} +fn test_remove_proposer() { + let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + world.whitebox_query(&multisig_whitebox, |sc| { + // check role before + let user_role = sc.user_role(managed_address!(&address_expr_to_address( + PROPOSER_ADDRESS_EXPR + ))); + assert_eq!(user_role, UserRole::Proposer); + }); + + let action_id = call_propose( + &mut world, + ActionRaw::RemoveUser(address_expr_to_address(PROPOSER_ADDRESS_EXPR)), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + world.whitebox_query(&multisig_whitebox, |sc| { + // check role after + let user_role = sc.user_role(managed_address!(&address_expr_to_address( + PROPOSER_ADDRESS_EXPR + ))); + assert_eq!(user_role, UserRole::None); + + let proposers = sc.get_all_proposers().to_vec(); + assert!(proposers.is_empty()); + }); +} #[test] fn test_try_remove_all_board_members() {} From 6229582fdcc83274c4895698a15ef4d5bf6cda29 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 15:03:51 +0300 Subject: [PATCH 12/54] yet another one migrated --- .../multisig/tests/multisig_whitebox_test.rs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index 462ed2d57d..3de0c3024c 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -360,7 +360,34 @@ fn test_remove_proposer() { } #[test] -fn test_try_remove_all_board_members() {} +fn test_try_remove_all_board_members() { + let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + let action_id = call_propose( + &mut world, + ActionRaw::RemoveUser(address_expr_to_address(BOARD_MEMBER_ADDRESS_EXPR)), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call_check( + &multisig_whitebox, + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .no_expect(), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + |r| { + r.assert_user_error("quorum cannot exceed board size"); + }, + ); +} #[test] fn test_change_quorum() {} From 18f0f7dcbb8b7997e585f018acc79356ff46fdaa Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 15:13:41 +0300 Subject: [PATCH 13/54] another migration incoming --- .../multisig/tests/multisig_whitebox_test.rs | 136 +++++++++++++++++- 1 file changed, 131 insertions(+), 5 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index 3de0c3024c..a10aa944d8 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -1,3 +1,5 @@ +#![allow(unused)] + use std::borrow::Borrow; use multisig::{ @@ -390,19 +392,143 @@ fn test_try_remove_all_board_members() { } #[test] -fn test_change_quorum() {} +fn test_change_quorum() { + let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + let new_quorum_size = 2; + + // try change quorum > board size + let action_id = call_propose(&mut world, ActionRaw::ChangeQuorum(new_quorum_size)); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call_check( + &multisig_whitebox, + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .no_expect(), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + |r| { + r.assert_user_error("quorum cannot exceed board size"); + }, + ); + + // try discard before unsigning + world.whitebox_call_check( + &multisig_whitebox, + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .no_expect(), + |sc| { + sc.discard_action(action_id); + }, + |r| { + r.assert_user_error("cannot discard action with valid signatures"); + }, + ); + + // unsign and discard action + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.unsign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + sc.discard_action(action_id); + }, + ); + + // try sign discarded action + world.whitebox_call_check( + &multisig_whitebox, + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .no_expect(), + |sc| { + sc.sign(action_id); + }, + |r| { + r.assert_user_error("action does not exist"); + }, + ); + + // add another board member + const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; + world.set_state_step( + SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + let action_id = call_propose( + &mut world, + ActionRaw::AddBoardMember(address_expr_to_address(NEW_BOARD_MEMBER_ADDRESS_EXPR)), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + // change quorum to 2 + let action_id = call_propose(&mut world, ActionRaw::ChangeQuorum(new_quorum_size)); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); +} #[test] -fn test_transfer_execute_to_user() {} +fn test_transfer_execute_to_user() { + let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); +} #[test] -fn test_transfer_execute_sc_all() {} +fn test_transfer_execute_sc_all() { + let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); +} #[test] -fn test_async_call_to_sc() {} +fn test_async_call_to_sc() { + let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); +} #[test] -fn test_deploy_and_upgrade_from_source() {} +fn test_deploy_and_upgrade_from_source() { + let mut world = setup(); + let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); +} fn address_expr_to_address(address_expr: &str) -> Address { AddressValue::from(address_expr).to_address() From d2549c4f4c97416d5462e12119d97652137a5c8d Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 16:02:19 +0300 Subject: [PATCH 14/54] another one --- .../tests/multisig_whitebox_legacy_test.rs | 145 +----------------- .../multisig/tests/multisig_whitebox_test.rs | 95 +++++++++++- 2 files changed, 90 insertions(+), 150 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs index 1ce34317f4..1c7348df34 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs @@ -1,155 +1,14 @@ #![allow(deprecated)] // TODO: migrate tests -use multisig::user_role::UserRole; use multisig_blackbox_setup::{CallActionDataRaw, MultisigSetup}; use multiversx_sc::types::{BoxedBytes, CodeMetadata}; -use multiversx_sc_scenario::{managed_address, managed_biguint, rust_biguint}; +use multiversx_sc_scenario::{managed_biguint, rust_biguint}; mod multisig_blackbox_setup; use adder::Adder; use factorial::Factorial; -use multisig::Multisig; -use crate::multisig_blackbox_setup::{ActionRaw, EGLD_TOKEN_ID}; - -#[test] -fn remove_proposer_test() { - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - - let proposer_addr = ms_setup.proposer_address.clone(); - ms_setup - .b_mock - .execute_query(&ms_setup.ms_wrapper, |sc| { - // check role before - let user_role = sc.user_role(managed_address!(&proposer_addr)); - assert_eq!(user_role, UserRole::Proposer); - }) - .assert_ok(); - - let (action_id, tx_result) = - ms_setup.call_propose(ActionRaw::RemoveUser(proposer_addr.clone())); - tx_result.assert_ok(); - - ms_setup.call_sign(action_id).assert_ok(); - ms_setup.call_perform_action(action_id).assert_ok(); - - ms_setup - .b_mock - .execute_query(&ms_setup.ms_wrapper, |sc| { - // check role after - let user_role = sc.user_role(managed_address!(&proposer_addr)); - assert_eq!(user_role, UserRole::None); - - let proposers = sc.get_all_proposers().to_vec(); - assert!(proposers.is_empty()); - }) - .assert_ok(); -} - -#[test] -fn try_remove_all_board_members_test() { - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - - let (action_id, tx_result) = - ms_setup.call_propose(ActionRaw::RemoveUser(ms_setup.board_member_address.clone())); - tx_result.assert_ok(); - - ms_setup.call_sign(action_id).assert_ok(); - ms_setup - .call_perform_action(action_id) - .assert_user_error("quorum cannot exceed board size"); -} - -#[test] -fn change_quorum_test() { - let rust_zero = rust_biguint!(0); - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - let new_quorum_size = 2; - - // try change quorum > board size - let (first_action_id, tx_result) = - ms_setup.call_propose(ActionRaw::ChangeQuorum(new_quorum_size)); - tx_result.assert_ok(); - - ms_setup.call_sign(first_action_id).assert_ok(); - ms_setup - .call_perform_action(first_action_id) - .assert_user_error("quorum cannot exceed board size"); - - // try discard before unsigning - ms_setup - .call_discard_action(first_action_id) - .assert_user_error("cannot discard action with valid signatures"); - - // unsign and discard action - ms_setup.call_unsign(first_action_id).assert_ok(); - ms_setup.call_discard_action(first_action_id).assert_ok(); - - // try sign discarded action - ms_setup - .call_sign(first_action_id) - .assert_user_error("action does not exist"); - - // add another board member - let new_board_member_addr = ms_setup.b_mock.create_user_account(&rust_zero); - let (second_action_id, tx_result) = - ms_setup.call_propose(ActionRaw::AddBoardMember(new_board_member_addr)); - tx_result.assert_ok(); - - ms_setup.call_sign(second_action_id).assert_ok(); - ms_setup.call_perform_action(second_action_id).assert_ok(); - - // change quorum to 2 - let (third_action_id, tx_result) = - ms_setup.call_propose(ActionRaw::ChangeQuorum(new_quorum_size)); - tx_result.assert_ok(); - - ms_setup.call_sign(third_action_id).assert_ok(); - ms_setup.call_perform_action(third_action_id).assert_ok(); -} - -#[test] -fn transfer_execute_to_user_test() { - let rust_zero = rust_biguint!(0); - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - let user_addr = ms_setup.b_mock.create_user_account(&rust_zero); - let egld_amount = 100; - - ms_setup - .call_deposit(EGLD_TOKEN_ID, egld_amount) - .assert_ok(); - - ms_setup.b_mock.check_egld_balance( - ms_setup.ms_wrapper.address_ref(), - &rust_biguint!(egld_amount), - ); - - // failed attempt - let (_, tx_result) = ms_setup.call_propose(ActionRaw::SendTransferExecute(CallActionDataRaw { - to: user_addr.clone(), - egld_amount: rust_biguint!(0), - endpoint_name: BoxedBytes::empty(), - arguments: Vec::new(), - })); - tx_result.assert_user_error("proposed action has no effect"); - - // propose - let (action_id, tx_result) = - ms_setup.call_propose(ActionRaw::SendTransferExecute(CallActionDataRaw { - to: user_addr.clone(), - egld_amount: rust_biguint!(egld_amount), - endpoint_name: BoxedBytes::empty(), - arguments: Vec::new(), - })); - tx_result.assert_ok(); - - ms_setup.call_sign(action_id).assert_ok(); - ms_setup.call_perform_action(action_id).assert_ok(); - - ms_setup - .b_mock - .check_egld_balance(&user_addr, &rust_biguint!(egld_amount)); -} +use crate::multisig_blackbox_setup::ActionRaw; #[test] fn transfer_execute_sc_call_test() { diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index a10aa944d8..e47d642666 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -15,7 +15,10 @@ use multiversx_sc::{ }; use multiversx_sc_scenario::{ managed_address, rust_biguint, - scenario_model::{Account, AddressValue, ScCallStep, ScDeployStep, SetStateStep}, + scenario_model::{ + Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, SetStateStep, + }, + testing_framework::TxResult, DebugApi, ScenarioWorld, WhiteboxContract, }; @@ -25,7 +28,6 @@ const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; const QUORUM_SIZE: usize = 1; -// const EGLD_TOKEN_ID: &[u8] = b"EGLD"; type RustBigUint = num_bigint::BigUint; @@ -113,7 +115,11 @@ fn test_init() { setup(); } -fn call_propose(world: &mut ScenarioWorld, action: ActionRaw) -> usize { +fn call_propose( + world: &mut ScenarioWorld, + action: ActionRaw, + expected_message: Option<&str>, +) -> usize { let egld_amount = match &action { ActionRaw::SendTransferExecute(call_data) => call_data.egld_amount.clone(), ActionRaw::SendAsyncCall(call_data) => call_data.egld_amount.clone(), @@ -128,11 +134,12 @@ fn call_propose(world: &mut ScenarioWorld, action: ActionRaw) -> usize { let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); - world.whitebox_call( + world.whitebox_call_check( &multisig_whitebox, ScCallStep::new() .from(PROPOSER_ADDRESS_EXPR) - .egld_value(amount_rust_biguint), + .egld_value(amount_rust_biguint) + .no_expect(), |sc| { action_id = match action { ActionRaw::_Nothing => panic!("Invalid action"), @@ -200,6 +207,10 @@ fn call_propose(world: &mut ScenarioWorld, action: ActionRaw) -> usize { ), } }, + |r| match expected_message { + Some(msg) => r.assert_user_error(msg), + None => r.assert_ok(), + }, ); action_id @@ -226,6 +237,7 @@ fn test_add_board_member() { let action_id = call_propose( &mut world, ActionRaw::AddBoardMember(address_expr_to_address(NEW_BOARD_MEMBER_ADDRESS_EXPR)), + None, ); world.whitebox_call( @@ -282,6 +294,7 @@ fn test_add_proposer() { let action_id = call_propose( &mut world, ActionRaw::AddProposer(address_expr_to_address(NEW_PROPOSER_ADDRESS_EXPR)), + None, ); world.whitebox_call( @@ -333,6 +346,7 @@ fn test_remove_proposer() { let action_id = call_propose( &mut world, ActionRaw::RemoveUser(address_expr_to_address(PROPOSER_ADDRESS_EXPR)), + None, ); world.whitebox_call( @@ -369,6 +383,7 @@ fn test_try_remove_all_board_members() { let action_id = call_propose( &mut world, ActionRaw::RemoveUser(address_expr_to_address(BOARD_MEMBER_ADDRESS_EXPR)), + None, ); world.whitebox_call( @@ -399,7 +414,7 @@ fn test_change_quorum() { let new_quorum_size = 2; // try change quorum > board size - let action_id = call_propose(&mut world, ActionRaw::ChangeQuorum(new_quorum_size)); + let action_id = call_propose(&mut world, ActionRaw::ChangeQuorum(new_quorum_size), None); world.whitebox_call( &multisig_whitebox, @@ -472,6 +487,7 @@ fn test_change_quorum() { let action_id = call_propose( &mut world, ActionRaw::AddBoardMember(address_expr_to_address(NEW_BOARD_MEMBER_ADDRESS_EXPR)), + None, ); world.whitebox_call( @@ -489,7 +505,7 @@ fn test_change_quorum() { ); // change quorum to 2 - let action_id = call_propose(&mut world, ActionRaw::ChangeQuorum(new_quorum_size)); + let action_id = call_propose(&mut world, ActionRaw::ChangeQuorum(new_quorum_size), None); world.whitebox_call( &multisig_whitebox, @@ -510,6 +526,71 @@ fn test_change_quorum() { fn test_transfer_execute_to_user() { let mut world = setup(); let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + const NEW_USER_ADDRESS_EXPR: &str = "address:new-user"; + world.set_state_step( + SetStateStep::new().put_account(NEW_USER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + const EGLD_AMOUNT: u64 = 100; + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .egld_value(EGLD_AMOUNT), + |sc| { + sc.deposit(); + }, + ); + + world.check_state_step(CheckStateStep::new().put_account( + MULTISIG_ADDRESS_EXPR, + CheckAccount::new().balance(EGLD_AMOUNT.to_string().as_str()), + )); + + // failed attempt + let action_id = call_propose( + &mut world, + ActionRaw::SendTransferExecute(CallActionDataRaw { + to: address_expr_to_address(NEW_USER_ADDRESS_EXPR), + egld_amount: rust_biguint!(0), + endpoint_name: BoxedBytes::empty(), + arguments: Vec::new(), + }), + Some("proposed action has no effect"), + ); + + // propose + let action_id = call_propose( + &mut world, + ActionRaw::SendTransferExecute(CallActionDataRaw { + to: address_expr_to_address(NEW_USER_ADDRESS_EXPR), + egld_amount: rust_biguint!(EGLD_AMOUNT), + endpoint_name: BoxedBytes::empty(), + arguments: Vec::new(), + }), + None, + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + world.check_state_step(CheckStateStep::new().put_account( + NEW_USER_ADDRESS_EXPR, + CheckAccount::new().balance(EGLD_AMOUNT.to_string().as_str()), + )); } #[test] From 96cc9549767b2f2d0fc43c6019464479265cc374 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 27 Jul 2023 18:26:42 +0300 Subject: [PATCH 15/54] add adder whitebox sc --- .../multisig/tests/multisig_whitebox_test.rs | 62 ++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index e47d642666..04e60842cb 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -2,6 +2,7 @@ use std::borrow::Borrow; +use adder::Adder; use multisig::{ multisig_perform::MultisigPerformModule, multisig_propose::MultisigProposeModule, user_role::UserRole, Multisig, @@ -9,14 +10,16 @@ use multisig::{ use multiversx_sc::{ api::ManagedTypeApi, codec::multi_types::OptionalValue, + storage::mappers::SingleValue, types::{ Address, BigUint, BoxedBytes, CodeMetadata, ManagedAddress, ManagedBuffer, ManagedVec, }, }; use multiversx_sc_scenario::{ - managed_address, rust_biguint, + managed_address, managed_biguint, rust_biguint, scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, SetStateStep, + Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, + SetStateStep, TxExpect, TypedScQuery, }, testing_framework::TxResult, DebugApi, ScenarioWorld, WhiteboxContract, @@ -597,6 +600,61 @@ fn test_transfer_execute_to_user() { fn test_transfer_execute_sc_all() { let mut world = setup(); let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + let adder_whitebox = WhiteboxContract::new(ADDER_ADDRESS_EXPR, adder::contract_obj); + let adder_code = world.code_expression(ADDER_PATH_EXPR); + + const ADDER_OWNER_ADDRESS_EXPR: &str = "address:adder-owner"; + const ADDER_ADDRESS_EXPR: &str = "sc:adder"; + const ADDER_PATH_EXPR: &str = "file:test-contracts/adder.wasm"; + + world.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + world.set_state_step( + SetStateStep::new() + .put_account(ADDER_OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(ADDER_OWNER_ADDRESS_EXPR, 1, ADDER_ADDRESS_EXPR), + ); + + world.whitebox_deploy( + &adder_whitebox, + ScDeployStep::new() + .from(ADDER_OWNER_ADDRESS_EXPR) + .code(adder_code), + |sc| { + sc.init(managed_biguint!(5)); + }, + ); + + let action_id = call_propose( + &mut world, + ActionRaw::SendTransferExecute(CallActionDataRaw { + to: address_expr_to_address(ADDER_ADDRESS_EXPR), + egld_amount: 0u64.into(), + endpoint_name: BoxedBytes::from(&b"add"[..]), + arguments: vec![BoxedBytes::from(&[5u8][..])], + }), + None, + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + world.whitebox_query(&adder_whitebox, |sc| { + let actual_sum = sc.sum().get(); + let expected_sum = managed_biguint!(10); + assert_eq!(actual_sum, expected_sum); + }); } #[test] From 446be095baa4d25589d435d34cece02fae69af43 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Fri, 28 Jul 2023 09:29:27 +0300 Subject: [PATCH 16/54] finished migration of all tests, preparing refactor --- .../tests/multisig_blackbox_setup/mod.rs | 280 ------------------ .../tests/multisig_whitebox_legacy_test.rs | 201 ------------- .../multisig/tests/multisig_whitebox_test.rs | 190 +++++++++++- .../model/account_data/account_check.rs | 11 + 4 files changed, 200 insertions(+), 482 deletions(-) delete mode 100644 contracts/examples/multisig/tests/multisig_blackbox_setup/mod.rs delete mode 100644 contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs diff --git a/contracts/examples/multisig/tests/multisig_blackbox_setup/mod.rs b/contracts/examples/multisig/tests/multisig_blackbox_setup/mod.rs deleted file mode 100644 index ce58e096df..0000000000 --- a/contracts/examples/multisig/tests/multisig_blackbox_setup/mod.rs +++ /dev/null @@ -1,280 +0,0 @@ -#![allow(dead_code)] - -use multisig::{ - multisig_perform::MultisigPerformModule, multisig_propose::MultisigProposeModule, - user_role::UserRole, Multisig, -}; -use multiversx_sc::{ - api::ManagedTypeApi, - codec::multi_types::OptionalValue, - types::{Address, BigUint, BoxedBytes, CodeMetadata, ManagedBuffer, ManagedVec}, -}; -use multiversx_sc_scenario::{managed_address, rust_biguint, testing_framework::*, DebugApi}; - -const MULTISIG_WASM_PATH: &str = "multisig/output/multisig.wasm"; -const QUORUM_SIZE: usize = 1; -pub const EGLD_TOKEN_ID: &[u8] = b"EGLD"; - -pub type RustBigUint = num_bigint::BigUint; - -pub enum ActionRaw { - _Nothing, - AddBoardMember(Address), - AddProposer(Address), - RemoveUser(Address), - ChangeQuorum(usize), - SendTransferExecute(CallActionDataRaw), - SendAsyncCall(CallActionDataRaw), - SCDeployFromSource { - amount: RustBigUint, - source: Address, - code_metadata: CodeMetadata, - arguments: Vec, - }, - SCUpgradeFromSource { - sc_address: Address, - amount: RustBigUint, - source: Address, - code_metadata: CodeMetadata, - arguments: Vec, - }, -} - -pub struct CallActionDataRaw { - pub to: Address, - pub egld_amount: RustBigUint, - pub endpoint_name: BoxedBytes, - pub arguments: Vec, -} - -pub struct MultisigSetup -where - MultisigObjBuilder: 'static + Copy + Fn() -> multisig::ContractObj, -{ - pub b_mock: BlockchainStateWrapper, - pub owner_address: Address, - pub proposer_address: Address, - pub board_member_address: Address, - pub ms_wrapper: ContractObjWrapper, MultisigObjBuilder>, -} - -impl MultisigSetup -where - MultisigObjBuilder: 'static + Copy + Fn() -> multisig::ContractObj, -{ - pub fn new(ms_builder: MultisigObjBuilder) -> Self { - let rust_zero = rust_biguint!(0u64); - let mut b_mock = BlockchainStateWrapper::new(); - let owner_address = b_mock.create_user_account(&rust_zero); - let proposer_address = b_mock.create_user_account(&rust_biguint!(100_000_000)); - let board_member_address = b_mock.create_user_account(&rust_zero); - - let ms_wrapper = b_mock.create_sc_account( - &rust_zero, - Some(&owner_address), - ms_builder, - MULTISIG_WASM_PATH, - ); - b_mock - .execute_tx(&owner_address, &ms_wrapper, &rust_zero, |sc| { - let mut board_members = ManagedVec::new(); - board_members.push(managed_address!(&board_member_address)); - - sc.init(QUORUM_SIZE, board_members.into()); - sc.change_user_role(0, managed_address!(&proposer_address), UserRole::Proposer); - }) - .assert_ok(); - - Self { - b_mock, - owner_address, - proposer_address, - board_member_address, - ms_wrapper, - } - } - - pub fn call_deposit(&mut self, token: &[u8], amount: u64) -> TxResult { - if token == b"EGLD" { - self.b_mock.execute_tx( - &self.proposer_address, - &self.ms_wrapper, - &rust_biguint!(amount), - |sc| { - sc.deposit(); - }, - ) - } else { - self.b_mock.execute_esdt_transfer( - &self.proposer_address, - &self.ms_wrapper, - token, - 0, - &rust_biguint!(amount), - |sc| { - sc.deposit(); - }, - ) - } - } - - pub fn call_propose(&mut self, action: ActionRaw) -> (usize, TxResult) { - let egld_amount = match &action { - ActionRaw::SendTransferExecute(call_data) => call_data.egld_amount.clone(), - ActionRaw::SendAsyncCall(call_data) => call_data.egld_amount.clone(), - ActionRaw::SCDeployFromSource { amount, .. } => amount.clone(), - ActionRaw::SCUpgradeFromSource { amount, .. } => amount.clone(), - _ => rust_biguint!(0), - }; - let amount_bytes = egld_amount.to_bytes_be(); - let amount_rust_biguint = num_bigint::BigUint::from_bytes_be(amount_bytes.as_slice()); - - let mut action_id = 0; - let tx_result = self.b_mock.execute_tx( - &self.proposer_address, - &self.ms_wrapper, - &amount_rust_biguint, - |sc| { - action_id = match action { - ActionRaw::_Nothing => panic!("Invalid action"), - ActionRaw::AddBoardMember(addr) => { - sc.propose_add_board_member(managed_address!(&addr)) - }, - ActionRaw::AddProposer(addr) => { - sc.propose_add_proposer(managed_address!(&addr)) - }, - ActionRaw::RemoveUser(addr) => sc.propose_remove_user(managed_address!(&addr)), - ActionRaw::ChangeQuorum(new_size) => sc.propose_change_quorum(new_size), - ActionRaw::SendTransferExecute(call_data) => { - let opt_endpoint = if call_data.endpoint_name.is_empty() { - OptionalValue::None - } else { - OptionalValue::Some(ManagedBuffer::new_from_bytes( - call_data.endpoint_name.as_slice(), - )) - }; - - sc.propose_transfer_execute( - managed_address!(&call_data.to), - BigUint::from_bytes_be(&call_data.egld_amount.to_bytes_be()), - opt_endpoint, - boxed_bytes_vec_to_managed(call_data.arguments).into(), - ) - }, - ActionRaw::SendAsyncCall(call_data) => { - let opt_endpoint = if call_data.endpoint_name.is_empty() { - OptionalValue::None - } else { - OptionalValue::Some(ManagedBuffer::new_from_bytes( - call_data.endpoint_name.as_slice(), - )) - }; - - sc.propose_async_call( - managed_address!(&call_data.to), - BigUint::from_bytes_be(&call_data.egld_amount.to_bytes_be()), - opt_endpoint, - boxed_bytes_vec_to_managed(call_data.arguments).into(), - ) - }, - ActionRaw::SCDeployFromSource { - amount, - source, - code_metadata, - arguments, - } => sc.propose_sc_deploy_from_source( - BigUint::from_bytes_be(&amount.to_bytes_be()), - managed_address!(&source), - code_metadata, - boxed_bytes_vec_to_managed(arguments).into(), - ), - ActionRaw::SCUpgradeFromSource { - sc_address, - amount, - source, - code_metadata, - arguments, - } => sc.propose_sc_upgrade_from_source( - managed_address!(&sc_address), - BigUint::from_bytes_be(&amount.to_bytes_be()), - managed_address!(&source), - code_metadata, - boxed_bytes_vec_to_managed(arguments).into(), - ), - } - }, - ); - - (action_id, tx_result) - } - - pub fn call_sign(&mut self, action_id: usize) -> TxResult { - self.b_mock.execute_tx( - &self.board_member_address, - &self.ms_wrapper, - &rust_biguint!(0), - |sc| { - sc.sign(action_id); - }, - ) - } - - pub fn call_unsign(&mut self, action_id: usize) -> TxResult { - self.b_mock.execute_tx( - &self.board_member_address, - &self.ms_wrapper, - &rust_biguint!(0), - |sc| { - sc.unsign(action_id); - }, - ) - } - - pub fn call_perform_action(&mut self, action_id: usize) -> TxResult { - self.b_mock.execute_tx( - &self.board_member_address, - &self.ms_wrapper, - &rust_biguint!(0), - |sc| { - let _ = sc.perform_action_endpoint(action_id); - }, - ) - } - - pub fn call_perform_action_with_result(&mut self, action_id: usize) -> (TxResult, Address) { - let mut addr = Address::zero(); - let tx_result = self.b_mock.execute_tx( - &self.board_member_address, - &self.ms_wrapper, - &rust_biguint!(0), - |sc| { - let opt_address = sc.perform_action_endpoint(action_id); - addr = opt_address.into_option().unwrap().to_address(); - }, - ); - - (tx_result, addr) - } - - pub fn call_discard_action(&mut self, action_id: usize) -> TxResult { - self.b_mock.execute_tx( - &self.board_member_address, - &self.ms_wrapper, - &rust_biguint!(0), - |sc| { - sc.discard_action(action_id); - }, - ) - } -} - -fn boxed_bytes_vec_to_managed( - raw_vec: Vec, -) -> ManagedVec> { - let mut managed = ManagedVec::new(); - for elem in raw_vec { - managed.push(ManagedBuffer::new_from_bytes(elem.as_slice())); - } - - managed -} diff --git a/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs deleted file mode 100644 index 1c7348df34..0000000000 --- a/contracts/examples/multisig/tests/multisig_whitebox_legacy_test.rs +++ /dev/null @@ -1,201 +0,0 @@ -#![allow(deprecated)] // TODO: migrate tests - -use multisig_blackbox_setup::{CallActionDataRaw, MultisigSetup}; -use multiversx_sc::types::{BoxedBytes, CodeMetadata}; -use multiversx_sc_scenario::{managed_biguint, rust_biguint}; - -mod multisig_blackbox_setup; -use adder::Adder; -use factorial::Factorial; - -use crate::multisig_blackbox_setup::ActionRaw; - -#[test] -fn transfer_execute_sc_call_test() { - let rust_zero = rust_biguint!(0); - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - let adder_owner = ms_setup.b_mock.create_user_account(&rust_zero); - let adder_wrapper = ms_setup.b_mock.create_sc_account( - &rust_zero, - Some(&adder_owner), - adder::contract_obj, - "path", - ); - - ms_setup - .b_mock - .execute_tx(&adder_owner, &adder_wrapper, &rust_zero, |sc| { - sc.init(managed_biguint!(5)); - }) - .assert_ok(); - - let (action_id, tx_result) = - ms_setup.call_propose(ActionRaw::SendTransferExecute(CallActionDataRaw { - to: adder_wrapper.address_ref().clone(), - egld_amount: rust_zero, - endpoint_name: BoxedBytes::from(&b"add"[..]), - arguments: vec![BoxedBytes::from(&[5u8][..])], - })); - tx_result.assert_ok(); - - ms_setup.call_sign(action_id).assert_ok(); - ms_setup.call_perform_action(action_id).assert_ok(); - - ms_setup - .b_mock - .execute_query(&adder_wrapper, |sc| { - let actual_sum = sc.sum().get(); - let expected_sum = managed_biguint!(10); - assert_eq!(actual_sum, expected_sum); - }) - .assert_ok(); -} - -#[test] -fn async_call_to_sc_test() { - let rust_zero = rust_biguint!(0); - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - let adder_owner = ms_setup.b_mock.create_user_account(&rust_zero); - let adder_wrapper = ms_setup.b_mock.create_sc_account( - &rust_zero, - Some(&adder_owner), - adder::contract_obj, - "path", - ); - - ms_setup - .b_mock - .execute_tx(&adder_owner, &adder_wrapper, &rust_zero, |sc| { - sc.init(managed_biguint!(5)); - }) - .assert_ok(); - - let (action_id, tx_result) = - ms_setup.call_propose(ActionRaw::SendAsyncCall(CallActionDataRaw { - to: adder_wrapper.address_ref().clone(), - egld_amount: rust_zero, - endpoint_name: BoxedBytes::from(&b"add"[..]), - arguments: vec![BoxedBytes::from(&[5u8][..])], - })); - tx_result.assert_ok(); - - ms_setup.call_sign(action_id).assert_ok(); - - let perform_action_result = ms_setup.call_perform_action(action_id); - perform_action_result.assert_ok(); - - ms_setup - .b_mock - .execute_query(&adder_wrapper, |sc| { - let actual_sum = sc.sum().get(); - let expected_sum = managed_biguint!(10); - assert_eq!(actual_sum, expected_sum); - }) - .assert_ok(); -} - -#[test] -fn deploy_and_upgrade_from_source_test() { - let rust_zero = rust_biguint!(0); - let mut ms_setup = MultisigSetup::new(multisig::contract_obj); - - // init deploy source SC - let adder_owner = ms_setup.b_mock.create_user_account(&rust_zero); - let adder_wrapper = ms_setup.b_mock.create_sc_account( - &rust_zero, - Some(&adder_owner), - adder::contract_obj, - "path", - ); - - ms_setup - .b_mock - .execute_tx(&adder_owner, &adder_wrapper, &rust_zero, |sc| { - sc.init(managed_biguint!(5)); - }) - .assert_ok(); - - // deploy from source - - let ms_addr = ms_setup.ms_wrapper.address_ref().clone(); - let new_adder_wrapper = ms_setup - .b_mock - .prepare_deploy_from_sc(&ms_addr, adder::contract_obj); - - let (deploy_action_id, tx_result) = ms_setup.call_propose(ActionRaw::SCDeployFromSource { - source: adder_wrapper.address_ref().clone(), - amount: rust_zero.clone(), - code_metadata: CodeMetadata::all(), - arguments: vec![BoxedBytes::from(&[5u8][..])], - }); - tx_result.assert_ok(); - - ms_setup.call_sign(deploy_action_id).assert_ok(); - let (tx_result, new_adder_addr_from_result) = - ms_setup.call_perform_action_with_result(deploy_action_id); - tx_result.assert_ok(); - - assert_eq!(new_adder_wrapper.address_ref(), &new_adder_addr_from_result); - - // call the new SC - - let (action_id, tx_result) = - ms_setup.call_propose(ActionRaw::SendTransferExecute(CallActionDataRaw { - to: new_adder_wrapper.address_ref().clone(), - egld_amount: rust_zero.clone(), - endpoint_name: BoxedBytes::from(&b"add"[..]), - arguments: vec![BoxedBytes::from(&[5u8][..])], - })); - tx_result.assert_ok(); - - ms_setup.call_sign(action_id).assert_ok(); - ms_setup.call_perform_action(action_id).assert_ok(); - - ms_setup - .b_mock - .execute_query(&new_adder_wrapper, |sc| { - let actual_sum = sc.sum().get(); - let expected_sum = managed_biguint!(10); - assert_eq!(actual_sum, expected_sum); - }) - .assert_ok(); - - // init upgrade source SC - let fact_owner = ms_setup.b_mock.create_user_account(&rust_zero); - let fact_wrapper = ms_setup.b_mock.create_sc_account( - &rust_zero, - Some(&fact_owner), - factorial::contract_obj, - "path222", - ); - - // upgrade adder to factorial - let (upgrade_action_id, tx_result) = ms_setup.call_propose(ActionRaw::SCUpgradeFromSource { - source: fact_wrapper.address_ref().clone(), - amount: rust_zero.clone(), - code_metadata: CodeMetadata::all(), - arguments: Vec::new(), - sc_address: adder_wrapper.address_ref().clone(), - }); - tx_result.assert_ok(); - - ms_setup.call_sign(upgrade_action_id).assert_ok(); - ms_setup.call_perform_action(upgrade_action_id).assert_ok(); - - tx_result.assert_ok(); - - let after_upgrade_wrapper = ms_setup - .b_mock - .upgrade_wrapper(adder_wrapper, factorial::contract_obj); - - // call SC after upgrade - - ms_setup - .b_mock - .execute_query(&after_upgrade_wrapper, |sc| { - let actual_fact = sc.factorial(managed_biguint!(5)); - let expected_fact = managed_biguint!(120); - assert_eq!(actual_fact, expected_fact); - }) - .assert_ok(); -} diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index 04e60842cb..6c949fa842 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -3,6 +3,7 @@ use std::borrow::Borrow; use adder::Adder; +use factorial::Factorial; use multisig::{ multisig_perform::MultisigPerformModule, multisig_propose::MultisigProposeModule, user_role::UserRole, Multisig, @@ -16,7 +17,9 @@ use multiversx_sc::{ }, }; use multiversx_sc_scenario::{ - managed_address, managed_biguint, rust_biguint, + managed_address, managed_biguint, + multiversx_chain_vm::types::VMAddress, + rust_biguint, scenario_model::{ Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, SetStateStep, TxExpect, TypedScQuery, @@ -661,12 +664,197 @@ fn test_transfer_execute_sc_all() { fn test_async_call_to_sc() { let mut world = setup(); let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + let adder_whitebox = WhiteboxContract::new(ADDER_ADDRESS_EXPR, adder::contract_obj); + let adder_code = world.code_expression(ADDER_PATH_EXPR); + + const ADDER_OWNER_ADDRESS_EXPR: &str = "address:adder-owner"; + const ADDER_ADDRESS_EXPR: &str = "sc:adder"; + const ADDER_PATH_EXPR: &str = "file:test-contracts/adder.wasm"; + + world.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + world.set_state_step( + SetStateStep::new() + .put_account(ADDER_OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(ADDER_OWNER_ADDRESS_EXPR, 1, ADDER_ADDRESS_EXPR), + ); + + world.whitebox_deploy( + &adder_whitebox, + ScDeployStep::new() + .from(ADDER_OWNER_ADDRESS_EXPR) + .code(adder_code), + |sc| { + sc.init(managed_biguint!(5)); + }, + ); + + let action_id = call_propose( + &mut world, + ActionRaw::SendAsyncCall(CallActionDataRaw { + to: address_expr_to_address(ADDER_ADDRESS_EXPR), + egld_amount: 0u64.into(), + endpoint_name: BoxedBytes::from(&b"add"[..]), + arguments: vec![BoxedBytes::from(&[5u8][..])], + }), + None, + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + world.whitebox_query(&adder_whitebox, |sc| { + let actual_sum = sc.sum().get(); + let expected_sum = managed_biguint!(10); + assert_eq!(actual_sum, expected_sum); + }); } #[test] fn test_deploy_and_upgrade_from_source() { let mut world = setup(); let multisig_whitebox = WhiteboxContract::new(MULTISIG_ADDRESS_EXPR, multisig::contract_obj); + + let adder_whitebox = WhiteboxContract::new(ADDER_ADDRESS_EXPR, adder::contract_obj); + let adder_code = world.code_expression(ADDER_PATH_EXPR); + + let new_adder_whitebox = WhiteboxContract::new(NEW_ADDER_ADDRESS_EXPR, adder::contract_obj); + + const ADDER_OWNER_ADDRESS_EXPR: &str = "address:adder-owner"; + const ADDER_ADDRESS_EXPR: &str = "sc:adder"; + const NEW_ADDER_ADDRESS_EXPR: &str = "sc:new-adder"; + const ADDER_PATH_EXPR: &str = "file:test-contracts/adder.wasm"; + + world.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + world.set_state_step( + SetStateStep::new() + .put_account(ADDER_OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(ADDER_OWNER_ADDRESS_EXPR, 1, ADDER_ADDRESS_EXPR) + .new_address(MULTISIG_ADDRESS_EXPR, 0, NEW_ADDER_ADDRESS_EXPR), + ); + + world.whitebox_deploy( + &adder_whitebox, + ScDeployStep::new() + .from(ADDER_OWNER_ADDRESS_EXPR) + .code(adder_code), + |sc| { + sc.init(managed_biguint!(5)); + }, + ); + + let action_id = call_propose( + &mut world, + ActionRaw::SCDeployFromSource { + amount: 0u64.into(), + source: address_expr_to_address(ADDER_ADDRESS_EXPR), + code_metadata: CodeMetadata::all(), + arguments: vec![BoxedBytes::from(&[5u8][..])], + }, + None, + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + let mut addr = Address::zero(); + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let opt_address = sc.perform_action_endpoint(action_id); + addr = opt_address.into_option().unwrap().to_address(); + }, + ); + + assert_eq!(address_expr_to_address(NEW_ADDER_ADDRESS_EXPR), addr); + + let action_id = call_propose( + &mut world, + ActionRaw::SendTransferExecute(CallActionDataRaw { + to: address_expr_to_address(NEW_ADDER_ADDRESS_EXPR), + egld_amount: 0u64.into(), + endpoint_name: BoxedBytes::from(&b"add"[..]), + arguments: vec![BoxedBytes::from(&[5u8][..])], + }), + None, + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + world.whitebox_query(&new_adder_whitebox, |sc| { + let actual_sum = sc.sum().get(); + let expected_sum = managed_biguint!(10); + assert_eq!(actual_sum, expected_sum); + }); + + let factorial_code = world.code_expression(FACTORIAL_PATH_EXPR); + + const FACTORIAL_ADDRESS_EXPR: &str = "sc:factorial"; + const FACTORIAL_PATH_EXPR: &str = "file:test-contracts/factorial.wasm"; + + world.register_contract(FACTORIAL_PATH_EXPR, factorial::ContractBuilder); + world.set_state_step(SetStateStep::new().put_account( + FACTORIAL_ADDRESS_EXPR, + Account::new().nonce(1).code(factorial_code.clone()), + )); + + let action_id = call_propose( + &mut world, + ActionRaw::SCUpgradeFromSource { + source: address_expr_to_address(FACTORIAL_ADDRESS_EXPR), + amount: 0u64.into(), + code_metadata: CodeMetadata::all(), + arguments: Vec::new(), + sc_address: address_expr_to_address(ADDER_ADDRESS_EXPR), + }, + None, + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| sc.sign(action_id), + ); + + world.whitebox_call( + &multisig_whitebox, + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR), + |sc| { + let _ = sc.perform_action_endpoint(action_id); + }, + ); + + world.check_state_step( + CheckStateStep::new() + .put_account(ADDER_ADDRESS_EXPR, CheckAccount::new().code(factorial_code)), + ); } fn address_expr_to_address(address_expr: &str) -> Address { diff --git a/framework/scenario/src/scenario/model/account_data/account_check.rs b/framework/scenario/src/scenario/model/account_data/account_check.rs index 07e2b4c5b9..f2becf776f 100644 --- a/framework/scenario/src/scenario/model/account_data/account_check.rs +++ b/framework/scenario/src/scenario/model/account_data/account_check.rs @@ -51,6 +51,17 @@ impl CheckAccount { self } + pub fn code(mut self, code_expr: V) -> Self + where + BytesValue: InterpretableFrom, + { + self.code = CheckValue::Equal(BytesValue::interpret_from( + code_expr, + &InterpreterContext::default(), + )); + self + } + pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self where BytesKey: From, From d4aa36a782f28adf2904d34fa0596a1c64042c93 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Mon, 21 Aug 2023 19:39:11 +0300 Subject: [PATCH 17/54] migration of transfer role features test with new syntax --- .../tests/transfer_role_module_legacy_test.rs | 167 ------------- .../tests/transfer_role_whitebox_test.rs | 227 ++++++++++++++++++ 2 files changed, 227 insertions(+), 167 deletions(-) delete mode 100644 contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_module_legacy_test.rs create mode 100644 contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs diff --git a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_module_legacy_test.rs b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_module_legacy_test.rs deleted file mode 100644 index ee2ff9b809..0000000000 --- a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_module_legacy_test.rs +++ /dev/null @@ -1,167 +0,0 @@ -#![allow(deprecated)] // TODO: migrate tests - -use multiversx_sc::types::{ - Address, EsdtLocalRole, EsdtTokenPayment, ManagedArgBuffer, ManagedVec, MultiValueEncoded, -}; -use multiversx_sc_modules::transfer_role_proxy::TransferRoleProxyModule; -use multiversx_sc_scenario::{ - managed_address, managed_biguint, managed_buffer, managed_token_id, rust_biguint, - testing_framework::BlockchainStateWrapper, -}; -use transfer_role_features::TransferRoleFeatures; - -static TRANSFER_TOKEN_ID: &[u8] = b"TRANSFER-123456"; -static ACCEPT_FUNDS_FUNC_NAME: &[u8] = b"accept_funds"; -static REJECT_FUNDS_FUNC_NAME: &[u8] = b"reject_funds"; - -#[test] -fn test_transfer_role_module() { - let rust_zero = rust_biguint!(0); - let mut b_mock = BlockchainStateWrapper::new(); - let user = b_mock.create_user_account(&rust_zero); - b_mock.set_esdt_balance(&user, TRANSFER_TOKEN_ID, &rust_biguint!(1_000)); - - let owner = b_mock.create_user_account(&rust_zero); - let sc_with_transfer_role = b_mock.create_sc_account( - &rust_zero, - Some(&owner), - transfer_role_features::contract_obj, - "wasm 1", - ); - let sc_dest = b_mock.create_sc_account(&rust_zero, Some(&owner), vault::contract_obj, "wasm 2"); - - b_mock - .execute_tx(&owner, &sc_with_transfer_role, &rust_zero, |sc| { - let mut whitelist = MultiValueEncoded::new(); - whitelist.push(managed_address!(&owner)); - whitelist.push(managed_address!(sc_dest.address_ref())); - - sc.init(whitelist); - }) - .assert_ok(); - - // Note: The role restrictions are not currently implemented in the mock - b_mock.set_esdt_local_roles( - sc_with_transfer_role.address_ref(), - TRANSFER_TOKEN_ID, - &[EsdtLocalRole::Transfer], - ); - - // transfer to user - ok - b_mock - .execute_esdt_transfer( - &user, - &sc_with_transfer_role, - TRANSFER_TOKEN_ID, - 0, - &rust_biguint!(100), - |sc| { - let payments = ManagedVec::from_single_item(EsdtTokenPayment::new( - managed_token_id!(TRANSFER_TOKEN_ID), - 0, - managed_biguint!(100), - )); - sc.transfer_to_user( - managed_address!(&user), - managed_address!(&owner), - payments, - managed_buffer!(b"enjoy"), - ); - }, - ) - .assert_ok(); - - b_mock.check_esdt_balance(&user, TRANSFER_TOKEN_ID, &rust_biguint!(900)); - b_mock.check_esdt_balance(&owner, TRANSFER_TOKEN_ID, &rust_biguint!(100)); - - // transfer to user - err, not whitelisted - b_mock - .execute_esdt_transfer( - &user, - &sc_with_transfer_role, - TRANSFER_TOKEN_ID, - 0, - &rust_biguint!(100), - |sc| { - let payments = ManagedVec::from_single_item(EsdtTokenPayment::new( - managed_token_id!(TRANSFER_TOKEN_ID), - 0, - managed_biguint!(100), - )); - sc.transfer_to_user( - managed_address!(&user), - managed_address!(&Address::zero()), - payments, - managed_buffer!(b"enjoy"), - ); - }, - ) - .assert_user_error("Destination address not whitelisted"); - - // transfer to sc - ok - b_mock - .execute_esdt_transfer( - &user, - &sc_with_transfer_role, - TRANSFER_TOKEN_ID, - 0, - &rust_biguint!(100), - |sc| { - let payments = ManagedVec::from_single_item(EsdtTokenPayment::new( - managed_token_id!(TRANSFER_TOKEN_ID), - 0, - managed_biguint!(100), - )); - sc.transfer_to_contract_raw( - managed_address!(&user), - managed_address!(sc_dest.address_ref()), - payments, - managed_buffer!(ACCEPT_FUNDS_FUNC_NAME), - ManagedArgBuffer::new(), - None, - ); - }, - ) - .assert_ok(); - - b_mock.check_esdt_balance(&user, TRANSFER_TOKEN_ID, &rust_biguint!(800)); - b_mock.check_esdt_balance( - sc_dest.address_ref(), - TRANSFER_TOKEN_ID, - &rust_biguint!(100), - ); - - // transfer to sc - err - b_mock - .execute_esdt_transfer( - &user, - &sc_with_transfer_role, - TRANSFER_TOKEN_ID, - 0, - &rust_biguint!(100), - |sc| { - let payments = ManagedVec::from_single_item(EsdtTokenPayment::new( - managed_token_id!(TRANSFER_TOKEN_ID), - 0, - managed_biguint!(100), - )); - - sc.transfer_to_contract_raw( - managed_address!(&user), - managed_address!(sc_dest.address_ref()), - payments, - managed_buffer!(REJECT_FUNDS_FUNC_NAME), - ManagedArgBuffer::new(), - None, - ); - }, - ) - .assert_ok(); - - b_mock.check_esdt_balance(&user, TRANSFER_TOKEN_ID, &rust_biguint!(800)); - b_mock.check_esdt_balance( - sc_dest.address_ref(), - TRANSFER_TOKEN_ID, - &rust_biguint!(100), - ); -} diff --git a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs new file mode 100644 index 0000000000..4915d68db2 --- /dev/null +++ b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs @@ -0,0 +1,227 @@ +use multiversx_sc::types::{ + Address, EsdtTokenPayment, ManagedArgBuffer, ManagedVec, MultiValueEncoded, +}; +use multiversx_sc_modules::transfer_role_proxy::TransferRoleProxyModule; +use multiversx_sc_scenario::{ + managed_address, managed_biguint, managed_buffer, managed_token_id, rust_biguint, + scenario_model::{ + Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, SetStateStep, + }, + ScenarioWorld, WhiteboxContract, +}; +use transfer_role_features::TransferRoleFeatures; + +const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const USER_ADDRESS_EXPR: &str = "address:user"; + +const TRANSFER_ROLE_FEATURES_ADDRESS_EXPR: &str = "sc:transfer-role-features"; +const TRANSFER_ROLE_FEATURES_PATH_EXPR: &str = "file:output/transfer_role_features.wasm"; + +const TRANSFER_TOKEN_ID: &str = "str:TRANSFER-123456"; + +const ACCEPT_FUNDS_FUNC_NAME: &[u8] = b"accept_funds"; +const REJECT_FUNDS_FUNC_NAME: &[u8] = b"reject_funds"; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/composability/transfer-role-features"); + + blockchain.register_contract( + TRANSFER_ROLE_FEATURES_PATH_EXPR, + transfer_role_features::ContractBuilder, + ); + blockchain +} + +#[test] +fn test_transfer_role() { + let mut world = world(); + + world.set_state_step( + SetStateStep::new() + .put_account( + OWNER_ADDRESS_EXPR, + Account::new() + .nonce(1) + .esdt_balance(TRANSFER_TOKEN_ID, 0u64), + ) + .new_address(OWNER_ADDRESS_EXPR, 1, TRANSFER_ROLE_FEATURES_ADDRESS_EXPR) + .put_account( + USER_ADDRESS_EXPR, + Account::new() + .nonce(1) + .esdt_balance(TRANSFER_TOKEN_ID, 1_000u64), + ), + ); + + // vault + let vault_code = world.code_expression(VAULT_PATH_EXPR); + + const VAULT_ADDRESS_EXPR: &str = "sc:vault"; + const VAULT_PATH_EXPR: &str = "file:../vault/output/vault.wasm"; + + world.register_contract(VAULT_PATH_EXPR, vault::ContractBuilder); + world.set_state_step( + SetStateStep::new().put_account( + VAULT_ADDRESS_EXPR, + Account::new() + .nonce(1) + .code(vault_code.clone()) + .esdt_balance(TRANSFER_TOKEN_ID, 0u64), + ), + ); + + let transfer_role_features_whitebox = WhiteboxContract::new( + TRANSFER_ROLE_FEATURES_ADDRESS_EXPR, + transfer_role_features::contract_obj, + ); + let transfer_role_features_code = world.code_expression(TRANSFER_ROLE_FEATURES_PATH_EXPR); + + // init + world.whitebox_deploy( + &transfer_role_features_whitebox, + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(transfer_role_features_code), + |sc| { + let mut whitelist = MultiValueEncoded::new(); + whitelist.push(managed_address!(&address_expr_to_address( + OWNER_ADDRESS_EXPR + ))); + whitelist.push(managed_address!(&address_expr_to_address( + VAULT_ADDRESS_EXPR + ))); + + sc.init(whitelist); + }, + ); + + // transfer to user - ok + world.whitebox_call( + &transfer_role_features_whitebox, + ScCallStep::new().from(USER_ADDRESS_EXPR).esdt_transfer( + TRANSFER_TOKEN_ID, + 0, + rust_biguint!(100), + ), + |sc| { + let payments = ManagedVec::from_single_item(EsdtTokenPayment::new( + managed_token_id!(TRANSFER_TOKEN_ID), + 0, + managed_biguint!(100), + )); + sc.transfer_to_user( + managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), + managed_address!(&address_expr_to_address(OWNER_ADDRESS_EXPR)), + payments, + managed_buffer!(b"enjoy"), + ); + }, + ); + + world.check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(900)), + )); + // world.check_state_step(CheckStateStep::new().put_account( + // OWNER_ADDRESS_EXPR, + // CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(100)), + // )); + + // transfer to user - err, not whitelisted + world.whitebox_call_check( + &transfer_role_features_whitebox, + ScCallStep::new() + .from(USER_ADDRESS_EXPR) + .esdt_transfer(TRANSFER_TOKEN_ID, 0, rust_biguint!(100)) + .no_expect(), + |sc| { + let payments = ManagedVec::from_single_item(EsdtTokenPayment::new( + managed_token_id!(TRANSFER_TOKEN_ID), + 0, + managed_biguint!(100), + )); + sc.transfer_to_user( + managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), + managed_address!(&Address::zero()), + payments, + managed_buffer!(b"enjoy"), + ); + }, + |r| { + r.assert_user_error("Destination address not whitelisted"); + }, + ); + + // transfer to sc - ok + world.whitebox_call( + &transfer_role_features_whitebox, + ScCallStep::new().from(USER_ADDRESS_EXPR).esdt_transfer( + TRANSFER_TOKEN_ID, + 0, + rust_biguint!(100), + ), + |sc| { + let payments = ManagedVec::from_single_item(EsdtTokenPayment::new( + managed_token_id!(TRANSFER_TOKEN_ID), + 0, + managed_biguint!(100), + )); + sc.transfer_to_contract_raw( + managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), + managed_address!(&address_expr_to_address(VAULT_ADDRESS_EXPR)), + payments, + managed_buffer!(ACCEPT_FUNDS_FUNC_NAME), + ManagedArgBuffer::new(), + None, + ); + }, + ); + + world.check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(800)), + )); + // world.check_state_step(CheckStateStep::new().put_account( + // VAULT_ADDRESS_EXPR, + // CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(100)), + // )); + + // transfer to sc - reject + world.whitebox_call( + &transfer_role_features_whitebox, + ScCallStep::new().from(USER_ADDRESS_EXPR).esdt_transfer( + TRANSFER_TOKEN_ID, + 0, + rust_biguint!(100), + ), + |sc| { + let payments = ManagedVec::from_single_item(EsdtTokenPayment::new( + managed_token_id!(TRANSFER_TOKEN_ID), + 0, + managed_biguint!(100), + )); + sc.transfer_to_contract_raw( + managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), + managed_address!(&address_expr_to_address(VAULT_ADDRESS_EXPR)), + payments, + managed_buffer!(REJECT_FUNDS_FUNC_NAME), + ManagedArgBuffer::new(), + None, + ); + }, + ); + + // world.check_state_step(CheckStateStep::new().put_account( + // USER_ADDRESS_EXPR, + // CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(800)), + // )); + // world.check_state_step(CheckStateStep::new().put_account( + // VAULT_ADDRESS_EXPR, + // CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(100)), + // )); +} + +fn address_expr_to_address(address_expr: &str) -> Address { + AddressValue::from(address_expr).to_address() +} From 1b1bd44bab03b63df352803d561441c35c1fd49b Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Mon, 21 Aug 2023 20:57:31 +0300 Subject: [PATCH 18/54] fix token_id expr issue --- .../tests/transfer_role_whitebox_test.rs | 61 ++++++++----------- 1 file changed, 26 insertions(+), 35 deletions(-) diff --git a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs index 4915d68db2..d88b9a981e 100644 --- a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs +++ b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs @@ -17,7 +17,8 @@ const USER_ADDRESS_EXPR: &str = "address:user"; const TRANSFER_ROLE_FEATURES_ADDRESS_EXPR: &str = "sc:transfer-role-features"; const TRANSFER_ROLE_FEATURES_PATH_EXPR: &str = "file:output/transfer_role_features.wasm"; -const TRANSFER_TOKEN_ID: &str = "str:TRANSFER-123456"; +const TRANSFER_TOKEN_ID_EXPR: &str = "str:TRANSFER-123456"; +const TRANSFER_TOKEN_ID: &[u8] = b"TRANSFER-123456"; const ACCEPT_FUNDS_FUNC_NAME: &[u8] = b"accept_funds"; const REJECT_FUNDS_FUNC_NAME: &[u8] = b"reject_funds"; @@ -39,18 +40,13 @@ fn test_transfer_role() { world.set_state_step( SetStateStep::new() - .put_account( - OWNER_ADDRESS_EXPR, - Account::new() - .nonce(1) - .esdt_balance(TRANSFER_TOKEN_ID, 0u64), - ) + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) .new_address(OWNER_ADDRESS_EXPR, 1, TRANSFER_ROLE_FEATURES_ADDRESS_EXPR) .put_account( USER_ADDRESS_EXPR, Account::new() .nonce(1) - .esdt_balance(TRANSFER_TOKEN_ID, 1_000u64), + .esdt_balance(TRANSFER_TOKEN_ID_EXPR, 1_000u64), ), ); @@ -61,15 +57,10 @@ fn test_transfer_role() { const VAULT_PATH_EXPR: &str = "file:../vault/output/vault.wasm"; world.register_contract(VAULT_PATH_EXPR, vault::ContractBuilder); - world.set_state_step( - SetStateStep::new().put_account( - VAULT_ADDRESS_EXPR, - Account::new() - .nonce(1) - .code(vault_code.clone()) - .esdt_balance(TRANSFER_TOKEN_ID, 0u64), - ), - ); + world.set_state_step(SetStateStep::new().put_account( + VAULT_ADDRESS_EXPR, + Account::new().nonce(1).code(vault_code.clone()), + )); let transfer_role_features_whitebox = WhiteboxContract::new( TRANSFER_ROLE_FEATURES_ADDRESS_EXPR, @@ -121,12 +112,12 @@ fn test_transfer_role() { world.check_state_step(CheckStateStep::new().put_account( USER_ADDRESS_EXPR, - CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(900)), + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, &rust_biguint!(900)), + )); + world.check_state_step(CheckStateStep::new().put_account( + OWNER_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, &rust_biguint!(100)), )); - // world.check_state_step(CheckStateStep::new().put_account( - // OWNER_ADDRESS_EXPR, - // CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(100)), - // )); // transfer to user - err, not whitelisted world.whitebox_call_check( @@ -180,12 +171,12 @@ fn test_transfer_role() { world.check_state_step(CheckStateStep::new().put_account( USER_ADDRESS_EXPR, - CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(800)), + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, &rust_biguint!(800)), + )); + world.check_state_step(CheckStateStep::new().put_account( + VAULT_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, &rust_biguint!(100)), )); - // world.check_state_step(CheckStateStep::new().put_account( - // VAULT_ADDRESS_EXPR, - // CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(100)), - // )); // transfer to sc - reject world.whitebox_call( @@ -212,14 +203,14 @@ fn test_transfer_role() { }, ); - // world.check_state_step(CheckStateStep::new().put_account( - // USER_ADDRESS_EXPR, - // CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(800)), - // )); - // world.check_state_step(CheckStateStep::new().put_account( - // VAULT_ADDRESS_EXPR, - // CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID, &rust_biguint!(100)), - // )); + world.check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, &rust_biguint!(800)), + )); + world.check_state_step(CheckStateStep::new().put_account( + VAULT_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, &rust_biguint!(100)), + )); } fn address_expr_to_address(address_expr: &str) -> Address { From 94aff106733a4204b5ca4f62098828e1d65b5cfa Mon Sep 17 00:00:00 2001 From: Fusee Date: Wed, 23 Aug 2023 18:02:27 +0200 Subject: [PATCH 19/54] added gas limit information in the TxCall -> ContractCallWithEgld conversion --- .../scenario/src/scenario/model/transaction/tx_call.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/framework/scenario/src/scenario/model/transaction/tx_call.rs b/framework/scenario/src/scenario/model/transaction/tx_call.rs index fb04f49d78..1e14638169 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_call.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_call.rs @@ -92,8 +92,11 @@ impl TxCall { (&self.to.value).into(), self.function.as_bytes(), (&self.egld_value.value).into(), - ) - .convert_to_esdt_transfer_call( + ); + + contract_call.basic.explicit_gas_limit = self.gas_limit.value; + + contract_call = contract_call.convert_to_esdt_transfer_call( self.esdt_value .iter() .map(|esdt| { From 632d0b15099aa0e03f23b9ceb9d338c6e1b2560b Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 23 Aug 2023 19:52:47 +0300 Subject: [PATCH 20/54] setup for blackbox test --- .../tests/multisig_new_blackbox_test.rs | 206 ++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 contracts/examples/multisig/tests/multisig_new_blackbox_test.rs diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs new file mode 100644 index 0000000000..1845ccf70e --- /dev/null +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -0,0 +1,206 @@ +#![allow(unused)] + +use multisig::{ + multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, user_role::UserRole, + ProxyTrait as _, +}; +use multiversx_sc::{codec::multi_types::MultiValueVec, types::Address}; +use multiversx_sc_scenario::{ + api::StaticApi, + scenario_model::{Account, AddressValue, ScCallStep, ScDeployStep, ScQueryStep, SetStateStep}, + ContractInfo, ScenarioWorld, +}; + +const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; +const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; +const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; +const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; +const QUORUM_SIZE: usize = 1; + +type MultisigContract = ContractInfo>; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/multisig"); + + blockchain.register_contract(MULTISIG_PATH_EXPR, multisig::ContractBuilder); + blockchain +} + +enum Action { + AddBoardMember(Address), + AddProposer(Address), + RemoveUser(Address), + ChangeQuorum(usize), +} + +struct MultisigTestState { + world: ScenarioWorld, + owner_address: Address, + proposer_address: Address, + board_member_address: Address, + multisig_contract: MultisigContract, +} + +impl MultisigTestState { + fn new() -> Self { + let mut world = world(); + world.set_state_step( + SetStateStep::new() + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, MULTISIG_ADDRESS_EXPR) + .put_account( + PROPOSER_ADDRESS_EXPR, + Account::new().nonce(1).balance("100_000_000"), + ) + .put_account(BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + let owner_address = AddressValue::from(OWNER_ADDRESS_EXPR).to_address(); + let proposer_address = AddressValue::from(PROPOSER_ADDRESS_EXPR).to_address(); + let board_member_address = AddressValue::from(BOARD_MEMBER_ADDRESS_EXPR).to_address(); + let multisig_contract = MultisigContract::new(MULTISIG_ADDRESS_EXPR); + + Self { + world, + owner_address, + proposer_address, + board_member_address, + multisig_contract, + } + } + + fn deploy(&mut self) -> &mut Self { + let multisig_code = self.world.code_expression(MULTISIG_PATH_EXPR); + let board_members = MultiValueVec::from(vec![self.board_member_address.clone()]); + + self.world.sc_deploy( + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(multisig_code) + .call(self.multisig_contract.init(QUORUM_SIZE, board_members)), + ); + + let action_id: usize = self.world.sc_call_get_result( + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_add_proposer(self.proposer_address.clone()), + ), + ); + self.sign(action_id); + self.perform(action_id); + + self.check_user_role(&self.proposer_address.clone(), UserRole::Proposer); + + self + } + + fn propose(&mut self, action: Action) -> usize { + match action { + Action::AddBoardMember(board_member_address) => self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_add_board_member(board_member_address), + ), + ), + Action::AddProposer(proposer_address) => self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_add_proposer(proposer_address), + ), + ), + Action::RemoveUser(user_address) => self.world.sc_call_get_result( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .call(self.multisig_contract.propose_remove_user(user_address)), + ), + Action::ChangeQuorum(new_quorum) => self.world.sc_call_get_result( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .call(self.multisig_contract.propose_change_quorum(new_quorum)), + ), + } + } + + fn perform(&mut self, action_id: usize) { + self.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(self.multisig_contract.perform_action_endpoint(action_id)), + ); + } + + fn sign(&mut self, action_id: usize) { + self.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(self.multisig_contract.sign(action_id)), + ); + } + + fn check_user_role(&mut self, user: &Address, expected_user_role: UserRole) { + self.world.sc_query_use_result( + ScQueryStep::new().call(self.multisig_contract.user_role(user.clone())), + |r| { + let user_role: UserRole = r.result.unwrap(); + assert_eq!(user_role, expected_user_role); + }, + ); + } +} + +#[test] +fn test_add_board_member() { + let mut state = MultisigTestState::new(); + state.deploy(); + + const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; + let new_board_member_address = AddressValue::from(NEW_BOARD_MEMBER_ADDRESS_EXPR).to_address(); + + state.world.set_state_step( + SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + state.check_user_role(&new_board_member_address, UserRole::None); + + let action_id = state.propose(Action::AddBoardMember(new_board_member_address.clone())); + state.sign(action_id); + state.perform(action_id); + + state.check_user_role(&new_board_member_address, UserRole::BoardMember); + + state.world.sc_query_use_result( + ScQueryStep::new().call(state.multisig_contract.get_all_board_members()), + |r| { + let board_members: MultiValueVec
= r.result.unwrap(); + assert_eq!(board_members.len(), 2); + assert_eq!(board_members.as_slice()[0], state.board_member_address); + assert_eq!(board_members.as_slice()[1], new_board_member_address); + }, + ); +} + +#[test] +fn test_add_proposer() {} + +#[test] +fn test_remove_proposer() {} + +#[test] +fn test_try_remove_all_board_members() {} + +#[test] +fn test_change_quorum() {} + +#[test] +fn test_transfer_execute_to_user() {} + +#[test] +fn test_transfer_execute_sc_all() {} + +#[test] +fn test_async_call_to_sc() {} + +#[test] +fn test_deploy_and_upgrade_from_source() {} From f2ad9ccb8cf051fe7c4c877a594803098c2cc76b Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 23 Aug 2023 19:57:38 +0300 Subject: [PATCH 21/54] test add proposer --- .../tests/multisig_new_blackbox_test.rs | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs index 1845ccf70e..d5cddc7472 100644 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -182,7 +182,35 @@ fn test_add_board_member() { } #[test] -fn test_add_proposer() {} +fn test_add_proposer() { + let mut state = MultisigTestState::new(); + state.deploy(); + + const NEW_PROPOSER_ADDRESS_EXPR: &str = "address:new-proposer"; + let new_proposer_address = AddressValue::from(NEW_PROPOSER_ADDRESS_EXPR).to_address(); + + state.world.set_state_step( + SetStateStep::new().put_account(NEW_PROPOSER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + state.check_user_role(&new_proposer_address, UserRole::None); + + let action_id = state.propose(Action::AddProposer(new_proposer_address.clone())); + state.sign(action_id); + state.perform(action_id); + + state.check_user_role(&new_proposer_address, UserRole::Proposer); + + state.world.sc_query_use_result( + ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), + |r| { + let proposers: MultiValueVec
= r.result.unwrap(); + assert_eq!(proposers.len(), 2); + assert_eq!(proposers.as_slice()[0], state.proposer_address); + assert_eq!(proposers.as_slice()[1], new_proposer_address); + }, + ); +} #[test] fn test_remove_proposer() {} From b3f0d2fd577f1c7373d474fc33923706e7261c46 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 23 Aug 2023 19:59:48 +0300 Subject: [PATCH 22/54] test remove proposer --- .../tests/multisig_new_blackbox_test.rs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs index d5cddc7472..15b79485da 100644 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -213,7 +213,26 @@ fn test_add_proposer() { } #[test] -fn test_remove_proposer() {} +fn test_remove_proposer() { + let mut state = MultisigTestState::new(); + state.deploy(); + + state.check_user_role(&state.proposer_address.clone(), UserRole::Proposer); + + let action_id = state.propose(Action::RemoveUser(state.proposer_address.clone())); + state.sign(action_id); + state.perform(action_id); + + state.check_user_role(&state.proposer_address.clone(), UserRole::None); + + state.world.sc_query_use_result( + ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), + |r| { + let proposers: MultiValueVec
= r.result.unwrap(); + assert_eq!(proposers.len(), 0); + }, + ); +} #[test] fn test_try_remove_all_board_members() {} From 5aae79d384032a44faed709347d3e09e9eb9f6ae Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 23 Aug 2023 20:10:03 +0300 Subject: [PATCH 23/54] add perform with expect + test --- .../tests/multisig_new_blackbox_test.rs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs index 15b79485da..1260055d66 100644 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -7,7 +7,9 @@ use multisig::{ use multiversx_sc::{codec::multi_types::MultiValueVec, types::Address}; use multiversx_sc_scenario::{ api::StaticApi, - scenario_model::{Account, AddressValue, ScCallStep, ScDeployStep, ScQueryStep, SetStateStep}, + scenario_model::{ + Account, AddressValue, ScCallStep, ScDeployStep, ScQueryStep, SetStateStep, TxExpect, + }, ContractInfo, ScenarioWorld, }; @@ -131,6 +133,15 @@ impl MultisigTestState { ); } + fn perform_with_expect(&mut self, action_id: usize, err_message: &str) { + self.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(self.multisig_contract.perform_action_endpoint(action_id)) + .expect(TxExpect::err(4, "str:".to_string() + err_message)), + ); + } + fn sign(&mut self, action_id: usize) { self.world.sc_call( ScCallStep::new() @@ -235,7 +246,14 @@ fn test_remove_proposer() { } #[test] -fn test_try_remove_all_board_members() {} +fn test_try_remove_all_board_members() { + let mut state = MultisigTestState::new(); + state.deploy(); + + let action_id = state.propose(Action::RemoveUser(state.board_member_address.clone())); + state.sign(action_id); + state.perform_with_expect(action_id, "quorum cannot exceed board size") +} #[test] fn test_change_quorum() {} From b490031fdeeb464ac208ef874b0a33df48f20cce Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Wed, 23 Aug 2023 20:23:30 +0300 Subject: [PATCH 24/54] add change quorum test --- .../tests/multisig_new_blackbox_test.rs | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs index 1260055d66..4b189d1fa2 100644 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -256,7 +256,65 @@ fn test_try_remove_all_board_members() { } #[test] -fn test_change_quorum() {} +fn test_change_quorum() { + let mut state = MultisigTestState::new(); + state.deploy(); + + let new_quorum = 2; + // try change quorum > board size + let action_id = state.propose(Action::ChangeQuorum(new_quorum)); + state.sign(action_id); + state.perform_with_expect(action_id, "quorum cannot exceed board size"); + + // try discard before unsigning + state.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.discard_action(action_id)) + .expect(TxExpect::err( + 4, + "str:cannot discard action with valid signatures", + )), + ); + + // unsign and discard action + state.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.unsign(action_id)), + ); + + state.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.discard_action(action_id)), + ); + + // try sign discarded action + state.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.sign(action_id)) + .expect(TxExpect::err(4, "str:action does not exist")), + ); + + // add another board member + const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; + let new_board_member_address = AddressValue::from(NEW_BOARD_MEMBER_ADDRESS_EXPR).to_address(); + + state.world.set_state_step( + SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + let action_id = state.propose(Action::AddBoardMember(new_board_member_address.clone())); + state.sign(action_id); + state.perform(action_id); + + // change quorum to 2 + let action_id = state.propose(Action::ChangeQuorum(new_quorum)); + state.sign(action_id); + state.perform(action_id); +} #[test] fn test_transfer_execute_to_user() {} From dbfb714c1fc3f92b809d5bbd63d4ea523eeab3dc Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 24 Aug 2023 11:24:51 +0300 Subject: [PATCH 25/54] more tets migration to blackbox --- .../tests/multisig_new_blackbox_test.rs | 189 ++++++++++++++++-- 1 file changed, 175 insertions(+), 14 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs index 4b189d1fa2..757491e8f1 100644 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -1,18 +1,28 @@ #![allow(unused)] +use adder::ProxyTrait as _; use multisig::{ multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, user_role::UserRole, ProxyTrait as _, }; -use multiversx_sc::{codec::multi_types::MultiValueVec, types::Address}; +use multiversx_sc::{ + codec::{multi_types::MultiValueVec, test_util::top_encode_to_vec_u8_or_panic}, + storage::mappers::{SingleValue, SingleValueMapper}, + types::{Address, CodeMetadata}, +}; use multiversx_sc_scenario::{ api::StaticApi, scenario_model::{ - Account, AddressValue, ScCallStep, ScDeployStep, ScQueryStep, SetStateStep, TxExpect, + Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, + SetStateStep, TxExpect, }, ContractInfo, ScenarioWorld, }; +use num_bigint::BigUint; +const ADDER_ADDRESS_EXPR: &str = "sc:adder"; +const ADDER_OWNER_ADDRESS_EXPR: &str = "address:adder-owner"; +const ADDER_PATH_EXPR: &str = "file:test-contracts/adder.wasm"; const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; @@ -21,12 +31,14 @@ const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; const QUORUM_SIZE: usize = 1; type MultisigContract = ContractInfo>; +type AdderContract = ContractInfo>; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/multisig"); blockchain.register_contract(MULTISIG_PATH_EXPR, multisig::ContractBuilder); + blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); blockchain } @@ -35,6 +47,10 @@ enum Action { AddProposer(Address), RemoveUser(Address), ChangeQuorum(usize), + SendTransferExecute(Address, u64, String, MultiValueVec>), + SendAsyncCall(Address, u64, String, MultiValueVec>), + SCDeployFromSource(u64, Address, CodeMetadata, MultiValueVec>), + SCUpgradeFromSource(Address, u64, Address, CodeMetadata, MultiValueVec>), } struct MultisigTestState { @@ -43,6 +59,7 @@ struct MultisigTestState { proposer_address: Address, board_member_address: Address, multisig_contract: MultisigContract, + adder_contract: AdderContract, } impl MultisigTestState { @@ -54,15 +71,18 @@ impl MultisigTestState { .new_address(OWNER_ADDRESS_EXPR, 1, MULTISIG_ADDRESS_EXPR) .put_account( PROPOSER_ADDRESS_EXPR, - Account::new().nonce(1).balance("100_000_000"), + Account::new().nonce(1).balance("100,000,000"), ) - .put_account(BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + .put_account(BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)) + .put_account(ADDER_OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(ADDER_OWNER_ADDRESS_EXPR, 1, ADDER_ADDRESS_EXPR), ); let owner_address = AddressValue::from(OWNER_ADDRESS_EXPR).to_address(); let proposer_address = AddressValue::from(PROPOSER_ADDRESS_EXPR).to_address(); let board_member_address = AddressValue::from(BOARD_MEMBER_ADDRESS_EXPR).to_address(); let multisig_contract = MultisigContract::new(MULTISIG_ADDRESS_EXPR); + let adder_contract = AdderContract::new(ADDER_ADDRESS_EXPR); Self { world, @@ -70,10 +90,11 @@ impl MultisigTestState { proposer_address, board_member_address, multisig_contract, + adder_contract, } } - fn deploy(&mut self) -> &mut Self { + fn deploy_multisig_contract(&mut self) -> &mut Self { let multisig_code = self.world.code_expression(MULTISIG_PATH_EXPR); let board_members = MultiValueVec::from(vec![self.board_member_address.clone()]); @@ -98,6 +119,19 @@ impl MultisigTestState { self } + fn deploy_adder_contract(&mut self) -> &mut Self { + let adder_code = self.world.code_expression(ADDER_PATH_EXPR); + + self.world.sc_deploy( + ScDeployStep::new() + .from(ADDER_OWNER_ADDRESS_EXPR) + .code(adder_code) + .call(self.adder_contract.init(5u64)), + ); + + self + } + fn propose(&mut self, action: Action) -> usize { match action { Action::AddBoardMember(board_member_address) => self.world.sc_call_get_result( @@ -122,6 +156,48 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS_EXPR) .call(self.multisig_contract.propose_change_quorum(new_quorum)), ), + Action::SendTransferExecute(to, egld_amount, opt_function, arguments) => self + .world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_transfer_execute( + to, + egld_amount, + opt_function, + arguments, + ), + )), + Action::SendAsyncCall(to, egld_amount, opt_function, arguments) => self + .world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_async_call( + to, + egld_amount, + opt_function, + arguments, + ), + )), + Action::SCDeployFromSource(amount, source, code_metadata, arguments) => self + .world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_sc_deploy_from_source( + amount, + source, + code_metadata, + arguments, + ), + )), + Action::SCUpgradeFromSource(sc_address, amount, source, code_metadata, arguments) => { + self.world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_sc_upgrade_from_source( + sc_address, + amount, + source, + code_metadata, + arguments, + ), + )) + }, } } @@ -164,7 +240,7 @@ impl MultisigTestState { #[test] fn test_add_board_member() { let mut state = MultisigTestState::new(); - state.deploy(); + state.deploy_multisig_contract(); const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; let new_board_member_address = AddressValue::from(NEW_BOARD_MEMBER_ADDRESS_EXPR).to_address(); @@ -195,7 +271,7 @@ fn test_add_board_member() { #[test] fn test_add_proposer() { let mut state = MultisigTestState::new(); - state.deploy(); + state.deploy_multisig_contract(); const NEW_PROPOSER_ADDRESS_EXPR: &str = "address:new-proposer"; let new_proposer_address = AddressValue::from(NEW_PROPOSER_ADDRESS_EXPR).to_address(); @@ -226,7 +302,7 @@ fn test_add_proposer() { #[test] fn test_remove_proposer() { let mut state = MultisigTestState::new(); - state.deploy(); + state.deploy_multisig_contract(); state.check_user_role(&state.proposer_address.clone(), UserRole::Proposer); @@ -248,7 +324,7 @@ fn test_remove_proposer() { #[test] fn test_try_remove_all_board_members() { let mut state = MultisigTestState::new(); - state.deploy(); + state.deploy_multisig_contract(); let action_id = state.propose(Action::RemoveUser(state.board_member_address.clone())); state.sign(action_id); @@ -258,7 +334,7 @@ fn test_try_remove_all_board_members() { #[test] fn test_change_quorum() { let mut state = MultisigTestState::new(); - state.deploy(); + state.deploy_multisig_contract(); let new_quorum = 2; // try change quorum > board size @@ -317,13 +393,98 @@ fn test_change_quorum() { } #[test] -fn test_transfer_execute_to_user() {} +fn test_transfer_execute_to_user() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract(); + + const NEW_USER_ADDRESS_EXPR: &str = "address:new-user"; + state.world.set_state_step( + SetStateStep::new().put_account(NEW_USER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + const AMOUNT: &str = "100"; + + state.world.sc_call( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .egld_value(AMOUNT) + .call(state.multisig_contract.deposit()), + ); + + state + .world + .check_state_step(CheckStateStep::new().put_account( + PROPOSER_ADDRESS_EXPR, + CheckAccount::new().balance("99,999,900"), + )); + + state.world.check_state_step( + CheckStateStep::new() + .put_account(MULTISIG_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), + ); +} #[test] -fn test_transfer_execute_sc_all() {} +fn test_transfer_execute_sc_all() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract().deploy_adder_contract(); + + let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); + let action_id = state.propose(Action::SendTransferExecute( + adder_contract_address.clone(), + 0u64, + "add".to_string(), + MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), + )); + state.sign(action_id); + state.perform(action_id); + + state + .world + .sc_query_use_result(ScQueryStep::new().call(state.adder_contract.sum()), |r| { + let result: SingleValue = r.result.unwrap(); + let expected_sum = 10u64; + assert_eq!(result.into(), expected_sum.into()); + }); +} #[test] -fn test_async_call_to_sc() {} +fn test_async_call_to_sc() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract().deploy_adder_contract(); + + let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); + let action_id = state.propose(Action::SendAsyncCall( + adder_contract_address.clone(), + 0u64, + "add".to_string(), + MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), + )); + state.sign(action_id); + state.perform(action_id); + + state + .world + .sc_query_use_result(ScQueryStep::new().call(state.adder_contract.sum()), |r| { + let result: SingleValue = r.result.unwrap(); + let expected_sum = 10u64; + assert_eq!(result.into(), expected_sum.into()); + }); +} #[test] -fn test_deploy_and_upgrade_from_source() {} +fn test_deploy_and_upgrade_from_source() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract().deploy_adder_contract(); + + const NEW_ADDER_ADDRESS_EXPR: &str = "sc:new-adder"; + state.world.set_state_step(SetStateStep::new().new_address( + MULTISIG_ADDRESS_EXPR, + 0, + NEW_ADDER_ADDRESS_EXPR, + )); + + let new_adder_address = AddressValue::from(NEW_ADDER_ADDRESS_EXPR).to_address(); + + // state.propose() +} From f07f2ae4e7e51e5965e10a8718d04d5e673883b7 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 24 Aug 2023 17:45:16 +0300 Subject: [PATCH 26/54] add deploy from source test --- .../tests/multisig_new_blackbox_test.rs | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs index 757491e8f1..74e7a841a2 100644 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -6,7 +6,10 @@ use multisig::{ ProxyTrait as _, }; use multiversx_sc::{ - codec::{multi_types::MultiValueVec, test_util::top_encode_to_vec_u8_or_panic}, + codec::{ + multi_types::{MultiValueVec, OptionalValue}, + test_util::top_encode_to_vec_u8_or_panic, + }, storage::mappers::{SingleValue, SingleValueMapper}, types::{Address, CodeMetadata}, }; @@ -393,6 +396,7 @@ fn test_change_quorum() { } #[test] +#[ignore = "not yet implemented"] fn test_transfer_execute_to_user() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); @@ -485,6 +489,22 @@ fn test_deploy_and_upgrade_from_source() { )); let new_adder_address = AddressValue::from(NEW_ADDER_ADDRESS_EXPR).to_address(); + let adder_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - // state.propose() + let action_id = state.propose(Action::SCDeployFromSource( + 0u64, + adder_address.clone(), + CodeMetadata::all(), + MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), + )); + state.sign(action_id); + state.world.sc_call_use_result( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.perform_action_endpoint(action_id)), + |r| { + let result: OptionalValue
= r.result.unwrap(); + assert_eq!(result.into_option().unwrap(), new_adder_address); + }, + ); } From 9bee2b0606312e5555f5bc73de857a075e8d453f Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 24 Aug 2023 18:05:34 +0300 Subject: [PATCH 27/54] add upgrade from source test --- .../tests/multisig_new_blackbox_test.rs | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs index 74e7a841a2..b90be866d3 100644 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -507,4 +507,53 @@ fn test_deploy_and_upgrade_from_source() { assert_eq!(result.into_option().unwrap(), new_adder_address); }, ); + + let action_id = state.propose(Action::SendTransferExecute( + new_adder_address.clone(), + 0u64, + "add".to_string(), + MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), + )); + state.sign(action_id); + state.perform(action_id); + + let mut new_adder_contract = AdderContract::new(NEW_ADDER_ADDRESS_EXPR); + + state + .world + .sc_query_use_result(ScQueryStep::new().call(new_adder_contract.sum()), |r| { + let result: SingleValue = r.result.unwrap(); + let expected_sum = 10u64; + assert_eq!(result.into(), expected_sum.into()); + }); + + let factorial_code = state.world.code_expression(FACTORIAL_PATH_EXPR); + + const FACTORIAL_ADDRESS_EXPR: &str = "sc:factorial"; + const FACTORIAL_PATH_EXPR: &str = "file:test-contracts/factorial.wasm"; + + state + .world + .register_contract(FACTORIAL_PATH_EXPR, factorial::ContractBuilder); + state.world.set_state_step(SetStateStep::new().put_account( + FACTORIAL_ADDRESS_EXPR, + Account::new().nonce(1).code(factorial_code.clone()), + )); + + let factorial_address = AddressValue::from(FACTORIAL_ADDRESS_EXPR).to_address(); + + let action_id = state.propose(Action::SCUpgradeFromSource( + adder_address.clone(), + 0u64, + factorial_address.clone(), + CodeMetadata::all(), + MultiValueVec::new(), + )); + state.sign(action_id); + state.perform(action_id); + + state.world.check_state_step( + CheckStateStep::new() + .put_account(ADDER_ADDRESS_EXPR, CheckAccount::new().code(factorial_code)), + ); } From 6b3a8f129de21cef2915d465dfcb737d76f5c9f7 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 24 Aug 2023 18:24:47 +0300 Subject: [PATCH 28/54] wrapup last test --- .../tests/multisig_new_blackbox_test.rs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs index b90be866d3..55c21a3360 100644 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs @@ -426,6 +426,36 @@ fn test_transfer_execute_to_user() { CheckStateStep::new() .put_account(MULTISIG_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), ); + + // failed attempt + let new_user_address = AddressValue::from(NEW_USER_ADDRESS_EXPR).to_address(); + + state.world.sc_call( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .call(state.multisig_contract.propose_transfer_execute( + new_user_address.clone(), + 0u64, + "".to_string(), + MultiValueVec::>::new(), + )) + .expect(TxExpect::err(4, "str:proposed action has no effect")), + ); + + // propose + let action_id = state.propose(Action::SendTransferExecute( + new_user_address.clone(), + AMOUNT.parse().unwrap(), + "".to_string(), + MultiValueVec::>::new(), + )); + state.sign(action_id); + state.perform(action_id); + + state.world.check_state_step( + CheckStateStep::new() + .put_account(NEW_USER_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), + ); } #[test] From 083645d3903b90deaf347e6f44d05829a6e70ada Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 24 Aug 2023 18:25:54 +0300 Subject: [PATCH 29/54] renamed blackbox file --- .../multisig/tests/multisig_blackbox_test.rs | 696 +++++++++++++----- .../tests/multisig_new_blackbox_test.rs | 589 --------------- 2 files changed, 518 insertions(+), 767 deletions(-) delete mode 100644 contracts/examples/multisig/tests/multisig_new_blackbox_test.rs diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index d3c22bf8bb..55c21a3360 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -1,249 +1,589 @@ #![allow(unused)] -use adder::*; +use adder::ProxyTrait as _; use multisig::{ - multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, ProxyTrait as _, + multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, user_role::UserRole, + ProxyTrait as _, }; - use multiversx_sc::{ - codec::multi_types::{MultiValueVec, OptionalValue}, - storage::mappers::SingleValue, + codec::{ + multi_types::{MultiValueVec, OptionalValue}, + test_util::top_encode_to_vec_u8_or_panic, + }, + storage::mappers::{SingleValue, SingleValueMapper}, types::{Address, CodeMetadata}, }; use multiversx_sc_scenario::{ api::StaticApi, - scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, - scenario_model::*, + scenario_model::{ + Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, + SetStateStep, TxExpect, + }, ContractInfo, ScenarioWorld, }; use num_bigint::BigUint; -const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; +const ADDER_ADDRESS_EXPR: &str = "sc:adder"; +const ADDER_OWNER_ADDRESS_EXPR: &str = "address:adder-owner"; const ADDER_PATH_EXPR: &str = "file:test-contracts/adder.wasm"; +const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; +const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; +const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; +const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; +const QUORUM_SIZE: usize = 1; + +type MultisigContract = ContractInfo>; +type AdderContract = ContractInfo>; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/multisig"); - blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); blockchain.register_contract(MULTISIG_PATH_EXPR, multisig::ContractBuilder); + blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); blockchain } -#[test] -fn basic_setup_test() { - let mut test = MultisigTestState::setup(); - test.multisig_deploy(); - - // TODO: transform into a framework test and replace here with sc_call_get_result - let mut board_members = MultiValueVec::
::new(); - test.world.sc_call_use_result( - ScCallStep::new() - .from(&test.alice) - .call(test.multisig.get_all_board_members()), - |tr| { - board_members = tr.result.unwrap(); - }, - ); - - let expected_board_members: Vec<_> = [ - test.alice.to_address(), - test.bob.to_address(), - test.carol.to_address(), - ] - .into(); - - assert_eq!(board_members.into_vec(), expected_board_members); -} - -#[test] -fn multisig_adder_test() { - let mut test = MultisigTestState::setup(); - test.adder_deploy().multisig_deploy(); - - let caller = &test.alice.to_address(); - let signers = [ - &test.alice.to_address(), - &test.bob.to_address(), - &test.carol.to_address(), - ]; - let deployed_sc_address = test.multisig_deploy_adder(caller, signers.as_slice()); - assert_eq!(deployed_sc_address, test.adder_multisig.to_address()); - - let first_value: BigUint = 42u64.into(); - let second_value: BigUint = 43u64.into(); - let expected_sum = first_value.clone() + second_value.clone(); - - test.multisig_call_adder_add(first_value, caller, &signers); - test.multisig_call_adder_add(second_value, caller, &signers); - test.adder_expect_get_sum(expected_sum, caller); +enum Action { + AddBoardMember(Address), + AddProposer(Address), + RemoveUser(Address), + ChangeQuorum(usize), + SendTransferExecute(Address, u64, String, MultiValueVec>), + SendAsyncCall(Address, u64, String, MultiValueVec>), + SCDeployFromSource(u64, Address, CodeMetadata, MultiValueVec>), + SCUpgradeFromSource(Address, u64, Address, CodeMetadata, MultiValueVec>), } -type MultisigContract = ContractInfo>; -type AdderContract = ContractInfo>; - struct MultisigTestState { world: ScenarioWorld, - owner: AddressValue, - alice: AddressValue, - bob: AddressValue, - carol: AddressValue, - multisig: MultisigContract, - adder: AdderContract, - adder_multisig: AdderContract, + owner_address: Address, + proposer_address: Address, + board_member_address: Address, + multisig_contract: MultisigContract, + adder_contract: AdderContract, } impl MultisigTestState { - fn setup() -> Self { - let world = world(); - let ic = &world.interpreter_context(); - - let mut state = MultisigTestState { - world, - owner: "address:owner".into(), - alice: "address:alice".into(), - bob: "address:bob".into(), - carol: "address:carol".into(), - multisig: MultisigContract::new("sc:multisig"), - adder: AdderContract::new("sc:adder"), - adder_multisig: AdderContract::new("sc:adder-multisig"), - }; - - state.world.set_state_step( + fn new() -> Self { + let mut world = world(); + world.set_state_step( SetStateStep::new() - .put_account(&state.owner, Account::new().nonce(1)) - .put_account(&state.alice, Account::new().nonce(1)) - .put_account(&state.bob, Account::new().nonce(1)) - .put_account(&state.carol, Account::new().nonce(1)), + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, MULTISIG_ADDRESS_EXPR) + .put_account( + PROPOSER_ADDRESS_EXPR, + Account::new().nonce(1).balance("100,000,000"), + ) + .put_account(BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)) + .put_account(ADDER_OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(ADDER_OWNER_ADDRESS_EXPR, 1, ADDER_ADDRESS_EXPR), ); - state - } + let owner_address = AddressValue::from(OWNER_ADDRESS_EXPR).to_address(); + let proposer_address = AddressValue::from(PROPOSER_ADDRESS_EXPR).to_address(); + let board_member_address = AddressValue::from(BOARD_MEMBER_ADDRESS_EXPR).to_address(); + let multisig_contract = MultisigContract::new(MULTISIG_ADDRESS_EXPR); + let adder_contract = AdderContract::new(ADDER_ADDRESS_EXPR); - fn multisig_deploy(&mut self) -> &mut Self { - self.world.set_state_step( - SetStateStep::new() - .put_account(&self.owner, Account::new().nonce(1)) - .new_address(&self.owner, 1, &self.multisig), - ); + Self { + world, + owner_address, + proposer_address, + board_member_address, + multisig_contract, + adder_contract, + } + } - let board: MultiValueVec
= vec![ - self.alice.value.clone(), - self.bob.value.clone(), - self.carol.value.clone(), - ] - .into(); + fn deploy_multisig_contract(&mut self) -> &mut Self { + let multisig_code = self.world.code_expression(MULTISIG_PATH_EXPR); + let board_members = MultiValueVec::from(vec![self.board_member_address.clone()]); - let ic = &self.world.interpreter_context(); self.world.sc_deploy( ScDeployStep::new() - .from(self.owner.clone()) - .code(self.world.code_expression(MULTISIG_PATH_EXPR)) - .call(self.multisig.init(2u32, board)), + .from(OWNER_ADDRESS_EXPR) + .code(multisig_code) + .call(self.multisig_contract.init(QUORUM_SIZE, board_members)), + ); + + let action_id: usize = self.world.sc_call_get_result( + ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_add_proposer(self.proposer_address.clone()), + ), ); + self.sign(action_id); + self.perform(action_id); + + self.check_user_role(&self.proposer_address.clone(), UserRole::Proposer); self } - fn adder_deploy(&mut self) -> &mut Self { - let ic = &self.world.interpreter_context(); - self.world.set_state_step( - SetStateStep::new() - .put_account(&self.owner, Account::new().nonce(1)) - .new_address(&self.owner, 1, &self.adder), - ); + fn deploy_adder_contract(&mut self) -> &mut Self { + let adder_code = self.world.code_expression(ADDER_PATH_EXPR); + self.world.sc_deploy( ScDeployStep::new() - .from(self.owner.clone()) - .code(self.world.code_expression(ADDER_PATH_EXPR)) - .call(self.adder.init(0u64)), + .from(ADDER_OWNER_ADDRESS_EXPR) + .code(adder_code) + .call(self.adder_contract.init(5u64)), ); self } - fn multisig_sign(&mut self, action_id: usize, signer: &Address) { + fn propose(&mut self, action: Action) -> usize { + match action { + Action::AddBoardMember(board_member_address) => self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_add_board_member(board_member_address), + ), + ), + Action::AddProposer(proposer_address) => self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_add_proposer(proposer_address), + ), + ), + Action::RemoveUser(user_address) => self.world.sc_call_get_result( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .call(self.multisig_contract.propose_remove_user(user_address)), + ), + Action::ChangeQuorum(new_quorum) => self.world.sc_call_get_result( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .call(self.multisig_contract.propose_change_quorum(new_quorum)), + ), + Action::SendTransferExecute(to, egld_amount, opt_function, arguments) => self + .world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_transfer_execute( + to, + egld_amount, + opt_function, + arguments, + ), + )), + Action::SendAsyncCall(to, egld_amount, opt_function, arguments) => self + .world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_async_call( + to, + egld_amount, + opt_function, + arguments, + ), + )), + Action::SCDeployFromSource(amount, source, code_metadata, arguments) => self + .world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_sc_deploy_from_source( + amount, + source, + code_metadata, + arguments, + ), + )), + Action::SCUpgradeFromSource(sc_address, amount, source, code_metadata, arguments) => { + self.world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_sc_upgrade_from_source( + sc_address, + amount, + source, + code_metadata, + arguments, + ), + )) + }, + } + } + + fn perform(&mut self, action_id: usize) { self.world.sc_call( ScCallStep::new() - .from(signer) - .call(self.multisig.sign(action_id)), + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(self.multisig_contract.perform_action_endpoint(action_id)), ); } - fn multisig_sign_multiple(&mut self, action_id: usize, signers: &[&Address]) { - for &signer in signers { - self.multisig_sign(action_id, signer) - } + fn perform_with_expect(&mut self, action_id: usize, err_message: &str) { + self.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(self.multisig_contract.perform_action_endpoint(action_id)) + .expect(TxExpect::err(4, "str:".to_string() + err_message)), + ); } - fn multisig_perform(&mut self, action_id: usize, caller: &Address) -> Option
{ - let output: OptionalValue
= self.world.sc_call_get_result( + fn sign(&mut self, action_id: usize) { + self.world.sc_call( ScCallStep::new() - .from(caller) - .call(self.multisig.perform_action_endpoint(action_id)), + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(self.multisig_contract.sign(action_id)), ); - output.into_option() } - fn multisig_sign_and_perform( - &mut self, - action_id: usize, - caller: &Address, - signers: &[&Address], - ) -> Option
{ - self.multisig_sign_multiple(action_id, signers); - self.multisig_perform(action_id, caller) + fn check_user_role(&mut self, user: &Address, expected_user_role: UserRole) { + self.world.sc_query_use_result( + ScQueryStep::new().call(self.multisig_contract.user_role(user.clone())), + |r| { + let user_role: UserRole = r.result.unwrap(); + assert_eq!(user_role, expected_user_role); + }, + ); } +} - fn multisig_deploy_adder(&mut self, caller: &Address, signers: &[&Address]) -> Address { - let action_id = self.multisig_propose_adder_deploy(caller); - self.multisig_sign_and_perform(action_id, caller, signers) - .unwrap() - } +#[test] +fn test_add_board_member() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract(); + + const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; + let new_board_member_address = AddressValue::from(NEW_BOARD_MEMBER_ADDRESS_EXPR).to_address(); + + state.world.set_state_step( + SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + state.check_user_role(&new_board_member_address, UserRole::None); + + let action_id = state.propose(Action::AddBoardMember(new_board_member_address.clone())); + state.sign(action_id); + state.perform(action_id); + + state.check_user_role(&new_board_member_address, UserRole::BoardMember); + + state.world.sc_query_use_result( + ScQueryStep::new().call(state.multisig_contract.get_all_board_members()), + |r| { + let board_members: MultiValueVec
= r.result.unwrap(); + assert_eq!(board_members.len(), 2); + assert_eq!(board_members.as_slice()[0], state.board_member_address); + assert_eq!(board_members.as_slice()[1], new_board_member_address); + }, + ); +} + +#[test] +fn test_add_proposer() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract(); + + const NEW_PROPOSER_ADDRESS_EXPR: &str = "address:new-proposer"; + let new_proposer_address = AddressValue::from(NEW_PROPOSER_ADDRESS_EXPR).to_address(); + + state.world.set_state_step( + SetStateStep::new().put_account(NEW_PROPOSER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + state.check_user_role(&new_proposer_address, UserRole::None); + + let action_id = state.propose(Action::AddProposer(new_proposer_address.clone())); + state.sign(action_id); + state.perform(action_id); + + state.check_user_role(&new_proposer_address, UserRole::Proposer); + + state.world.sc_query_use_result( + ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), + |r| { + let proposers: MultiValueVec
= r.result.unwrap(); + assert_eq!(proposers.len(), 2); + assert_eq!(proposers.as_slice()[0], state.proposer_address); + assert_eq!(proposers.as_slice()[1], new_proposer_address); + }, + ); +} + +#[test] +fn test_remove_proposer() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract(); + + state.check_user_role(&state.proposer_address.clone(), UserRole::Proposer); + + let action_id = state.propose(Action::RemoveUser(state.proposer_address.clone())); + state.sign(action_id); + state.perform(action_id); + + state.check_user_role(&state.proposer_address.clone(), UserRole::None); + + state.world.sc_query_use_result( + ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), + |r| { + let proposers: MultiValueVec
= r.result.unwrap(); + assert_eq!(proposers.len(), 0); + }, + ); +} + +#[test] +fn test_try_remove_all_board_members() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract(); + + let action_id = state.propose(Action::RemoveUser(state.board_member_address.clone())); + state.sign(action_id); + state.perform_with_expect(action_id, "quorum cannot exceed board size") +} + +#[test] +fn test_change_quorum() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract(); + + let new_quorum = 2; + // try change quorum > board size + let action_id = state.propose(Action::ChangeQuorum(new_quorum)); + state.sign(action_id); + state.perform_with_expect(action_id, "quorum cannot exceed board size"); + + // try discard before unsigning + state.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.discard_action(action_id)) + .expect(TxExpect::err( + 4, + "str:cannot discard action with valid signatures", + )), + ); + + // unsign and discard action + state.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.unsign(action_id)), + ); + + state.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.discard_action(action_id)), + ); + + // try sign discarded action + state.world.sc_call( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.sign(action_id)) + .expect(TxExpect::err(4, "str:action does not exist")), + ); + + // add another board member + const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; + let new_board_member_address = AddressValue::from(NEW_BOARD_MEMBER_ADDRESS_EXPR).to_address(); + + state.world.set_state_step( + SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + let action_id = state.propose(Action::AddBoardMember(new_board_member_address.clone())); + state.sign(action_id); + state.perform(action_id); + + // change quorum to 2 + let action_id = state.propose(Action::ChangeQuorum(new_quorum)); + state.sign(action_id); + state.perform(action_id); +} + +#[test] +#[ignore = "not yet implemented"] +fn test_transfer_execute_to_user() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract(); + + const NEW_USER_ADDRESS_EXPR: &str = "address:new-user"; + state.world.set_state_step( + SetStateStep::new().put_account(NEW_USER_ADDRESS_EXPR, Account::new().nonce(1)), + ); + + const AMOUNT: &str = "100"; - fn multisig_propose_adder_deploy(&mut self, caller: &Address) -> usize { - self.world.set_state_step(SetStateStep::new().new_address( - &self.multisig.scenario_address_expr, - 0, - &self.adder_multisig, + state.world.sc_call( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .egld_value(AMOUNT) + .call(state.multisig_contract.deposit()), + ); + + state + .world + .check_state_step(CheckStateStep::new().put_account( + PROPOSER_ADDRESS_EXPR, + CheckAccount::new().balance("99,999,900"), )); - let adder_init_args = self.adder.init(0u64).arg_buffer.into_multi_value_encoded(); - self.world - .sc_call_get_result(ScCallStep::new().from(caller).call( - self.multisig.propose_sc_deploy_from_source( - 0u64, - &self.adder, - CodeMetadata::DEFAULT, - adder_init_args, - ), - )) - } + state.world.check_state_step( + CheckStateStep::new() + .put_account(MULTISIG_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), + ); - fn multisig_call_adder_add(&mut self, number: BigUint, caller: &Address, signers: &[&Address]) { - let action_id = self.multisig_propose_adder_add(number, caller); - self.multisig_sign_and_perform(action_id, caller, signers); - } + // failed attempt + let new_user_address = AddressValue::from(NEW_USER_ADDRESS_EXPR).to_address(); - fn multisig_propose_adder_add(&mut self, number: BigUint, caller: &Address) -> usize { - let adder_call = self.adder.add(number); - self.world - .sc_call_get_result(ScCallStep::new().from(caller).call( - self.multisig.propose_transfer_execute( - &self.adder.to_address(), - 0u32, - adder_call.endpoint_name, - adder_call.arg_buffer.into_multi_value_encoded(), - ), + state.world.sc_call( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .call(state.multisig_contract.propose_transfer_execute( + new_user_address.clone(), + 0u64, + "".to_string(), + MultiValueVec::>::new(), )) - } + .expect(TxExpect::err(4, "str:proposed action has no effect")), + ); - fn adder_expect_get_sum(&mut self, expected_sum: BigUint, caller: &Address) -> BigUint { - let value: SingleValue = self.world.sc_query_get_result( - ScQueryStep::new() - .call(self.adder.sum()) - .expect_value(SingleValue::from(expected_sum)), - ); - value.into() - } + // propose + let action_id = state.propose(Action::SendTransferExecute( + new_user_address.clone(), + AMOUNT.parse().unwrap(), + "".to_string(), + MultiValueVec::>::new(), + )); + state.sign(action_id); + state.perform(action_id); + + state.world.check_state_step( + CheckStateStep::new() + .put_account(NEW_USER_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), + ); +} + +#[test] +fn test_transfer_execute_sc_all() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract().deploy_adder_contract(); + + let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); + let action_id = state.propose(Action::SendTransferExecute( + adder_contract_address.clone(), + 0u64, + "add".to_string(), + MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), + )); + state.sign(action_id); + state.perform(action_id); + + state + .world + .sc_query_use_result(ScQueryStep::new().call(state.adder_contract.sum()), |r| { + let result: SingleValue = r.result.unwrap(); + let expected_sum = 10u64; + assert_eq!(result.into(), expected_sum.into()); + }); +} + +#[test] +fn test_async_call_to_sc() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract().deploy_adder_contract(); + + let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); + let action_id = state.propose(Action::SendAsyncCall( + adder_contract_address.clone(), + 0u64, + "add".to_string(), + MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), + )); + state.sign(action_id); + state.perform(action_id); + + state + .world + .sc_query_use_result(ScQueryStep::new().call(state.adder_contract.sum()), |r| { + let result: SingleValue = r.result.unwrap(); + let expected_sum = 10u64; + assert_eq!(result.into(), expected_sum.into()); + }); +} + +#[test] +fn test_deploy_and_upgrade_from_source() { + let mut state = MultisigTestState::new(); + state.deploy_multisig_contract().deploy_adder_contract(); + + const NEW_ADDER_ADDRESS_EXPR: &str = "sc:new-adder"; + state.world.set_state_step(SetStateStep::new().new_address( + MULTISIG_ADDRESS_EXPR, + 0, + NEW_ADDER_ADDRESS_EXPR, + )); + + let new_adder_address = AddressValue::from(NEW_ADDER_ADDRESS_EXPR).to_address(); + let adder_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); + + let action_id = state.propose(Action::SCDeployFromSource( + 0u64, + adder_address.clone(), + CodeMetadata::all(), + MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), + )); + state.sign(action_id); + state.world.sc_call_use_result( + ScCallStep::new() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .call(state.multisig_contract.perform_action_endpoint(action_id)), + |r| { + let result: OptionalValue
= r.result.unwrap(); + assert_eq!(result.into_option().unwrap(), new_adder_address); + }, + ); + + let action_id = state.propose(Action::SendTransferExecute( + new_adder_address.clone(), + 0u64, + "add".to_string(), + MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), + )); + state.sign(action_id); + state.perform(action_id); + + let mut new_adder_contract = AdderContract::new(NEW_ADDER_ADDRESS_EXPR); + + state + .world + .sc_query_use_result(ScQueryStep::new().call(new_adder_contract.sum()), |r| { + let result: SingleValue = r.result.unwrap(); + let expected_sum = 10u64; + assert_eq!(result.into(), expected_sum.into()); + }); + + let factorial_code = state.world.code_expression(FACTORIAL_PATH_EXPR); + + const FACTORIAL_ADDRESS_EXPR: &str = "sc:factorial"; + const FACTORIAL_PATH_EXPR: &str = "file:test-contracts/factorial.wasm"; + + state + .world + .register_contract(FACTORIAL_PATH_EXPR, factorial::ContractBuilder); + state.world.set_state_step(SetStateStep::new().put_account( + FACTORIAL_ADDRESS_EXPR, + Account::new().nonce(1).code(factorial_code.clone()), + )); + + let factorial_address = AddressValue::from(FACTORIAL_ADDRESS_EXPR).to_address(); + + let action_id = state.propose(Action::SCUpgradeFromSource( + adder_address.clone(), + 0u64, + factorial_address.clone(), + CodeMetadata::all(), + MultiValueVec::new(), + )); + state.sign(action_id); + state.perform(action_id); + + state.world.check_state_step( + CheckStateStep::new() + .put_account(ADDER_ADDRESS_EXPR, CheckAccount::new().code(factorial_code)), + ); } diff --git a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs deleted file mode 100644 index 55c21a3360..0000000000 --- a/contracts/examples/multisig/tests/multisig_new_blackbox_test.rs +++ /dev/null @@ -1,589 +0,0 @@ -#![allow(unused)] - -use adder::ProxyTrait as _; -use multisig::{ - multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, user_role::UserRole, - ProxyTrait as _, -}; -use multiversx_sc::{ - codec::{ - multi_types::{MultiValueVec, OptionalValue}, - test_util::top_encode_to_vec_u8_or_panic, - }, - storage::mappers::{SingleValue, SingleValueMapper}, - types::{Address, CodeMetadata}, -}; -use multiversx_sc_scenario::{ - api::StaticApi, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, - SetStateStep, TxExpect, - }, - ContractInfo, ScenarioWorld, -}; -use num_bigint::BigUint; - -const ADDER_ADDRESS_EXPR: &str = "sc:adder"; -const ADDER_OWNER_ADDRESS_EXPR: &str = "address:adder-owner"; -const ADDER_PATH_EXPR: &str = "file:test-contracts/adder.wasm"; -const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; -const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; -const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; -const OWNER_ADDRESS_EXPR: &str = "address:owner"; -const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; -const QUORUM_SIZE: usize = 1; - -type MultisigContract = ContractInfo>; -type AdderContract = ContractInfo>; - -fn world() -> ScenarioWorld { - let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/multisig"); - - blockchain.register_contract(MULTISIG_PATH_EXPR, multisig::ContractBuilder); - blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); - blockchain -} - -enum Action { - AddBoardMember(Address), - AddProposer(Address), - RemoveUser(Address), - ChangeQuorum(usize), - SendTransferExecute(Address, u64, String, MultiValueVec>), - SendAsyncCall(Address, u64, String, MultiValueVec>), - SCDeployFromSource(u64, Address, CodeMetadata, MultiValueVec>), - SCUpgradeFromSource(Address, u64, Address, CodeMetadata, MultiValueVec>), -} - -struct MultisigTestState { - world: ScenarioWorld, - owner_address: Address, - proposer_address: Address, - board_member_address: Address, - multisig_contract: MultisigContract, - adder_contract: AdderContract, -} - -impl MultisigTestState { - fn new() -> Self { - let mut world = world(); - world.set_state_step( - SetStateStep::new() - .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) - .new_address(OWNER_ADDRESS_EXPR, 1, MULTISIG_ADDRESS_EXPR) - .put_account( - PROPOSER_ADDRESS_EXPR, - Account::new().nonce(1).balance("100,000,000"), - ) - .put_account(BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)) - .put_account(ADDER_OWNER_ADDRESS_EXPR, Account::new().nonce(1)) - .new_address(ADDER_OWNER_ADDRESS_EXPR, 1, ADDER_ADDRESS_EXPR), - ); - - let owner_address = AddressValue::from(OWNER_ADDRESS_EXPR).to_address(); - let proposer_address = AddressValue::from(PROPOSER_ADDRESS_EXPR).to_address(); - let board_member_address = AddressValue::from(BOARD_MEMBER_ADDRESS_EXPR).to_address(); - let multisig_contract = MultisigContract::new(MULTISIG_ADDRESS_EXPR); - let adder_contract = AdderContract::new(ADDER_ADDRESS_EXPR); - - Self { - world, - owner_address, - proposer_address, - board_member_address, - multisig_contract, - adder_contract, - } - } - - fn deploy_multisig_contract(&mut self) -> &mut Self { - let multisig_code = self.world.code_expression(MULTISIG_PATH_EXPR); - let board_members = MultiValueVec::from(vec![self.board_member_address.clone()]); - - self.world.sc_deploy( - ScDeployStep::new() - .from(OWNER_ADDRESS_EXPR) - .code(multisig_code) - .call(self.multisig_contract.init(QUORUM_SIZE, board_members)), - ); - - let action_id: usize = self.world.sc_call_get_result( - ScCallStep::new().from(BOARD_MEMBER_ADDRESS_EXPR).call( - self.multisig_contract - .propose_add_proposer(self.proposer_address.clone()), - ), - ); - self.sign(action_id); - self.perform(action_id); - - self.check_user_role(&self.proposer_address.clone(), UserRole::Proposer); - - self - } - - fn deploy_adder_contract(&mut self) -> &mut Self { - let adder_code = self.world.code_expression(ADDER_PATH_EXPR); - - self.world.sc_deploy( - ScDeployStep::new() - .from(ADDER_OWNER_ADDRESS_EXPR) - .code(adder_code) - .call(self.adder_contract.init(5u64)), - ); - - self - } - - fn propose(&mut self, action: Action) -> usize { - match action { - Action::AddBoardMember(board_member_address) => self.world.sc_call_get_result( - ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract - .propose_add_board_member(board_member_address), - ), - ), - Action::AddProposer(proposer_address) => self.world.sc_call_get_result( - ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract - .propose_add_proposer(proposer_address), - ), - ), - Action::RemoveUser(user_address) => self.world.sc_call_get_result( - ScCallStep::new() - .from(PROPOSER_ADDRESS_EXPR) - .call(self.multisig_contract.propose_remove_user(user_address)), - ), - Action::ChangeQuorum(new_quorum) => self.world.sc_call_get_result( - ScCallStep::new() - .from(PROPOSER_ADDRESS_EXPR) - .call(self.multisig_contract.propose_change_quorum(new_quorum)), - ), - Action::SendTransferExecute(to, egld_amount, opt_function, arguments) => self - .world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_transfer_execute( - to, - egld_amount, - opt_function, - arguments, - ), - )), - Action::SendAsyncCall(to, egld_amount, opt_function, arguments) => self - .world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_async_call( - to, - egld_amount, - opt_function, - arguments, - ), - )), - Action::SCDeployFromSource(amount, source, code_metadata, arguments) => self - .world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_sc_deploy_from_source( - amount, - source, - code_metadata, - arguments, - ), - )), - Action::SCUpgradeFromSource(sc_address, amount, source, code_metadata, arguments) => { - self.world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_sc_upgrade_from_source( - sc_address, - amount, - source, - code_metadata, - arguments, - ), - )) - }, - } - } - - fn perform(&mut self, action_id: usize) { - self.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(self.multisig_contract.perform_action_endpoint(action_id)), - ); - } - - fn perform_with_expect(&mut self, action_id: usize, err_message: &str) { - self.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(self.multisig_contract.perform_action_endpoint(action_id)) - .expect(TxExpect::err(4, "str:".to_string() + err_message)), - ); - } - - fn sign(&mut self, action_id: usize) { - self.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(self.multisig_contract.sign(action_id)), - ); - } - - fn check_user_role(&mut self, user: &Address, expected_user_role: UserRole) { - self.world.sc_query_use_result( - ScQueryStep::new().call(self.multisig_contract.user_role(user.clone())), - |r| { - let user_role: UserRole = r.result.unwrap(); - assert_eq!(user_role, expected_user_role); - }, - ); - } -} - -#[test] -fn test_add_board_member() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract(); - - const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; - let new_board_member_address = AddressValue::from(NEW_BOARD_MEMBER_ADDRESS_EXPR).to_address(); - - state.world.set_state_step( - SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), - ); - - state.check_user_role(&new_board_member_address, UserRole::None); - - let action_id = state.propose(Action::AddBoardMember(new_board_member_address.clone())); - state.sign(action_id); - state.perform(action_id); - - state.check_user_role(&new_board_member_address, UserRole::BoardMember); - - state.world.sc_query_use_result( - ScQueryStep::new().call(state.multisig_contract.get_all_board_members()), - |r| { - let board_members: MultiValueVec
= r.result.unwrap(); - assert_eq!(board_members.len(), 2); - assert_eq!(board_members.as_slice()[0], state.board_member_address); - assert_eq!(board_members.as_slice()[1], new_board_member_address); - }, - ); -} - -#[test] -fn test_add_proposer() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract(); - - const NEW_PROPOSER_ADDRESS_EXPR: &str = "address:new-proposer"; - let new_proposer_address = AddressValue::from(NEW_PROPOSER_ADDRESS_EXPR).to_address(); - - state.world.set_state_step( - SetStateStep::new().put_account(NEW_PROPOSER_ADDRESS_EXPR, Account::new().nonce(1)), - ); - - state.check_user_role(&new_proposer_address, UserRole::None); - - let action_id = state.propose(Action::AddProposer(new_proposer_address.clone())); - state.sign(action_id); - state.perform(action_id); - - state.check_user_role(&new_proposer_address, UserRole::Proposer); - - state.world.sc_query_use_result( - ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), - |r| { - let proposers: MultiValueVec
= r.result.unwrap(); - assert_eq!(proposers.len(), 2); - assert_eq!(proposers.as_slice()[0], state.proposer_address); - assert_eq!(proposers.as_slice()[1], new_proposer_address); - }, - ); -} - -#[test] -fn test_remove_proposer() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract(); - - state.check_user_role(&state.proposer_address.clone(), UserRole::Proposer); - - let action_id = state.propose(Action::RemoveUser(state.proposer_address.clone())); - state.sign(action_id); - state.perform(action_id); - - state.check_user_role(&state.proposer_address.clone(), UserRole::None); - - state.world.sc_query_use_result( - ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), - |r| { - let proposers: MultiValueVec
= r.result.unwrap(); - assert_eq!(proposers.len(), 0); - }, - ); -} - -#[test] -fn test_try_remove_all_board_members() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract(); - - let action_id = state.propose(Action::RemoveUser(state.board_member_address.clone())); - state.sign(action_id); - state.perform_with_expect(action_id, "quorum cannot exceed board size") -} - -#[test] -fn test_change_quorum() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract(); - - let new_quorum = 2; - // try change quorum > board size - let action_id = state.propose(Action::ChangeQuorum(new_quorum)); - state.sign(action_id); - state.perform_with_expect(action_id, "quorum cannot exceed board size"); - - // try discard before unsigning - state.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.discard_action(action_id)) - .expect(TxExpect::err( - 4, - "str:cannot discard action with valid signatures", - )), - ); - - // unsign and discard action - state.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.unsign(action_id)), - ); - - state.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.discard_action(action_id)), - ); - - // try sign discarded action - state.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.sign(action_id)) - .expect(TxExpect::err(4, "str:action does not exist")), - ); - - // add another board member - const NEW_BOARD_MEMBER_ADDRESS_EXPR: &str = "address:new-board-member"; - let new_board_member_address = AddressValue::from(NEW_BOARD_MEMBER_ADDRESS_EXPR).to_address(); - - state.world.set_state_step( - SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), - ); - - let action_id = state.propose(Action::AddBoardMember(new_board_member_address.clone())); - state.sign(action_id); - state.perform(action_id); - - // change quorum to 2 - let action_id = state.propose(Action::ChangeQuorum(new_quorum)); - state.sign(action_id); - state.perform(action_id); -} - -#[test] -#[ignore = "not yet implemented"] -fn test_transfer_execute_to_user() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract(); - - const NEW_USER_ADDRESS_EXPR: &str = "address:new-user"; - state.world.set_state_step( - SetStateStep::new().put_account(NEW_USER_ADDRESS_EXPR, Account::new().nonce(1)), - ); - - const AMOUNT: &str = "100"; - - state.world.sc_call( - ScCallStep::new() - .from(PROPOSER_ADDRESS_EXPR) - .egld_value(AMOUNT) - .call(state.multisig_contract.deposit()), - ); - - state - .world - .check_state_step(CheckStateStep::new().put_account( - PROPOSER_ADDRESS_EXPR, - CheckAccount::new().balance("99,999,900"), - )); - - state.world.check_state_step( - CheckStateStep::new() - .put_account(MULTISIG_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), - ); - - // failed attempt - let new_user_address = AddressValue::from(NEW_USER_ADDRESS_EXPR).to_address(); - - state.world.sc_call( - ScCallStep::new() - .from(PROPOSER_ADDRESS_EXPR) - .call(state.multisig_contract.propose_transfer_execute( - new_user_address.clone(), - 0u64, - "".to_string(), - MultiValueVec::>::new(), - )) - .expect(TxExpect::err(4, "str:proposed action has no effect")), - ); - - // propose - let action_id = state.propose(Action::SendTransferExecute( - new_user_address.clone(), - AMOUNT.parse().unwrap(), - "".to_string(), - MultiValueVec::>::new(), - )); - state.sign(action_id); - state.perform(action_id); - - state.world.check_state_step( - CheckStateStep::new() - .put_account(NEW_USER_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), - ); -} - -#[test] -fn test_transfer_execute_sc_all() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract().deploy_adder_contract(); - - let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - let action_id = state.propose(Action::SendTransferExecute( - adder_contract_address.clone(), - 0u64, - "add".to_string(), - MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - )); - state.sign(action_id); - state.perform(action_id); - - state - .world - .sc_query_use_result(ScQueryStep::new().call(state.adder_contract.sum()), |r| { - let result: SingleValue = r.result.unwrap(); - let expected_sum = 10u64; - assert_eq!(result.into(), expected_sum.into()); - }); -} - -#[test] -fn test_async_call_to_sc() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract().deploy_adder_contract(); - - let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - let action_id = state.propose(Action::SendAsyncCall( - adder_contract_address.clone(), - 0u64, - "add".to_string(), - MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - )); - state.sign(action_id); - state.perform(action_id); - - state - .world - .sc_query_use_result(ScQueryStep::new().call(state.adder_contract.sum()), |r| { - let result: SingleValue = r.result.unwrap(); - let expected_sum = 10u64; - assert_eq!(result.into(), expected_sum.into()); - }); -} - -#[test] -fn test_deploy_and_upgrade_from_source() { - let mut state = MultisigTestState::new(); - state.deploy_multisig_contract().deploy_adder_contract(); - - const NEW_ADDER_ADDRESS_EXPR: &str = "sc:new-adder"; - state.world.set_state_step(SetStateStep::new().new_address( - MULTISIG_ADDRESS_EXPR, - 0, - NEW_ADDER_ADDRESS_EXPR, - )); - - let new_adder_address = AddressValue::from(NEW_ADDER_ADDRESS_EXPR).to_address(); - let adder_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - - let action_id = state.propose(Action::SCDeployFromSource( - 0u64, - adder_address.clone(), - CodeMetadata::all(), - MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - )); - state.sign(action_id); - state.world.sc_call_use_result( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.perform_action_endpoint(action_id)), - |r| { - let result: OptionalValue
= r.result.unwrap(); - assert_eq!(result.into_option().unwrap(), new_adder_address); - }, - ); - - let action_id = state.propose(Action::SendTransferExecute( - new_adder_address.clone(), - 0u64, - "add".to_string(), - MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - )); - state.sign(action_id); - state.perform(action_id); - - let mut new_adder_contract = AdderContract::new(NEW_ADDER_ADDRESS_EXPR); - - state - .world - .sc_query_use_result(ScQueryStep::new().call(new_adder_contract.sum()), |r| { - let result: SingleValue = r.result.unwrap(); - let expected_sum = 10u64; - assert_eq!(result.into(), expected_sum.into()); - }); - - let factorial_code = state.world.code_expression(FACTORIAL_PATH_EXPR); - - const FACTORIAL_ADDRESS_EXPR: &str = "sc:factorial"; - const FACTORIAL_PATH_EXPR: &str = "file:test-contracts/factorial.wasm"; - - state - .world - .register_contract(FACTORIAL_PATH_EXPR, factorial::ContractBuilder); - state.world.set_state_step(SetStateStep::new().put_account( - FACTORIAL_ADDRESS_EXPR, - Account::new().nonce(1).code(factorial_code.clone()), - )); - - let factorial_address = AddressValue::from(FACTORIAL_ADDRESS_EXPR).to_address(); - - let action_id = state.propose(Action::SCUpgradeFromSource( - adder_address.clone(), - 0u64, - factorial_address.clone(), - CodeMetadata::all(), - MultiValueVec::new(), - )); - state.sign(action_id); - state.perform(action_id); - - state.world.check_state_step( - CheckStateStep::new() - .put_account(ADDER_ADDRESS_EXPR, CheckAccount::new().code(factorial_code)), - ); -} From fd66d52597f0a6b1dda6881d1d2f4f0376a4569d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 25 Aug 2023 02:04:11 +0300 Subject: [PATCH 30/54] delete username builtin function & tests --- Cargo.lock | 18 ++ Cargo.toml | 2 + .../feature-tests/composability/Cargo.toml | 3 + .../builtin-func-features/Cargo.toml | 22 ++ .../builtin-func-features/meta/Cargo.toml | 12 + .../builtin-func-features/meta/src/main.rs | 3 + .../builtin-func-features/multiversx.json | 3 + .../src/builtin_func_features.rs | 31 +++ .../src/builtin_func_proxy.rs | 10 + .../builtin-func-features/wasm/Cargo.lock | 209 ++++++++++++++++++ .../builtin-func-features/wasm/Cargo.toml | 26 +++ .../builtin-func-features/wasm/src/lib.rs | 28 +++ .../builtin_func_delete_user_name.scen.json | 59 +++++ .../builtin_func_set_user_name.scen.json | 59 +++++ .../tests/composability_scenario_go_test.rs | 11 + .../tests/composability_scenario_rs_test.rs | 14 ++ .../base/src/api/builtin_function_names.rs | 1 + .../builtin_func_container.rs | 5 +- .../{general/mod.rs => general.rs} | 2 + .../general/delete_username_mock.rs | 37 ++++ .../vm_builtin_function_names.rs | 1 + 21 files changed, 554 insertions(+), 2 deletions(-) create mode 100644 contracts/feature-tests/composability/builtin-func-features/Cargo.toml create mode 100644 contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml create mode 100644 contracts/feature-tests/composability/builtin-func-features/meta/src/main.rs create mode 100644 contracts/feature-tests/composability/builtin-func-features/multiversx.json create mode 100644 contracts/feature-tests/composability/builtin-func-features/src/builtin_func_features.rs create mode 100644 contracts/feature-tests/composability/builtin-func-features/src/builtin_func_proxy.rs create mode 100644 contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock create mode 100644 contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml create mode 100644 contracts/feature-tests/composability/builtin-func-features/wasm/src/lib.rs create mode 100644 contracts/feature-tests/composability/scenarios/builtin_func_delete_user_name.scen.json create mode 100644 contracts/feature-tests/composability/scenarios/builtin_func_set_user_name.scen.json rename vm/src/tx_execution/builtin_function_mocks/{general/mod.rs => general.rs} (78%) create mode 100644 vm/src/tx_execution/builtin_function_mocks/general/delete_username_mock.rs diff --git a/Cargo.lock b/Cargo.lock index f2ffb398ef..e1d91f87af 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -373,6 +373,23 @@ dependencies = [ "serde", ] +[[package]] +name = "builtin-func-features" +version = "0.0.0" +dependencies = [ + "multiversx-sc", + "multiversx-sc-scenario", + "multiversx-sc-wasm-adapter", +] + +[[package]] +name = "builtin-func-features-meta" +version = "0.0.0" +dependencies = [ + "builtin-func-features", + "multiversx-sc-meta", +] + [[package]] name = "bumpalo" version = "3.13.0" @@ -542,6 +559,7 @@ checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" name = "composability-tests" version = "0.0.0" dependencies = [ + "builtin-func-features", "forwarder", "forwarder-queue", "forwarder-raw", diff --git a/Cargo.toml b/Cargo.toml index 92134b22a2..3e2a20a57d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -110,6 +110,8 @@ members = [ "contracts/feature-tests/big-float-features/meta", "contracts/feature-tests/composability", "contracts/feature-tests/composability/interact", + "contracts/feature-tests/composability/builtin-func-features", + "contracts/feature-tests/composability/builtin-func-features/meta", "contracts/feature-tests/composability/esdt-contract-pair", "contracts/feature-tests/composability/esdt-contract-pair/first-contract", "contracts/feature-tests/composability/esdt-contract-pair/first-contract/meta", diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index 941ba9680e..85ec0f41bb 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -5,6 +5,9 @@ authors = ["Andrei Marinica "] edition = "2021" publish = false +[dev-dependencies.builtin-func-features] +path = "builtin-func-features" + [dev-dependencies.forwarder] path = "forwarder" diff --git a/contracts/feature-tests/composability/builtin-func-features/Cargo.toml b/contracts/feature-tests/composability/builtin-func-features/Cargo.toml new file mode 100644 index 0000000000..b784f8882d --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "builtin-func-features" +version = "0.0.0" +authors = ["Andrei Marinica "] +edition = "2021" +publish = false + +[lib] +path = "src/builtin_func_features.rs" + +[dependencies.multiversx-sc] +version = "0.43.2" +path = "../../../../framework/base" + +[dependencies.multiversx-sc-wasm-adapter] +version = "0.43.2" +path = "../../../../framework/wasm-adapter" +optional = true + +[dev-dependencies.multiversx-sc-scenario] +version = "0.43.2" +path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml new file mode 100644 index 0000000000..10692099ba --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "builtin-func-features-meta" +version = "0.0.0" +edition = "2021" +publish = false + +[dependencies.builtin-func-features] +path = ".." + +[dependencies.multiversx-sc-meta] +version = "0.43.2" +path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/builtin-func-features/meta/src/main.rs b/contracts/feature-tests/composability/builtin-func-features/meta/src/main.rs new file mode 100644 index 0000000000..2f9740634f --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/meta/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + multiversx_sc_meta::cli_main::(); +} diff --git a/contracts/feature-tests/composability/builtin-func-features/multiversx.json b/contracts/feature-tests/composability/builtin-func-features/multiversx.json new file mode 100644 index 0000000000..8d77ca316c --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/multiversx.json @@ -0,0 +1,3 @@ +{ + "language": "rust" +} diff --git a/contracts/feature-tests/composability/builtin-func-features/src/builtin_func_features.rs b/contracts/feature-tests/composability/builtin-func-features/src/builtin_func_features.rs new file mode 100644 index 0000000000..81df199e68 --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/src/builtin_func_features.rs @@ -0,0 +1,31 @@ +#![no_std] + +pub mod builtin_func_proxy; + +multiversx_sc::imports!(); + +/// Test contract for investigating async calls. +#[multiversx_sc::contract] +pub trait BuiltinFuncFeatures { + #[proxy] + fn builtin_func_proxy(&self, to: ManagedAddress) -> builtin_func_proxy::Proxy; + + #[init] + fn init(&self) {} + + #[endpoint] + fn call_set_user_name(&self, address: ManagedAddress, name: ManagedBuffer) { + self.builtin_func_proxy(address) + .set_user_name(&name) + .async_call() + .call_and_exit() + } + + #[endpoint] + fn call_delete_user_name(&self, address: ManagedAddress) { + self.builtin_func_proxy(address) + .delete_user_name() + .async_call() + .call_and_exit(); + } +} diff --git a/contracts/feature-tests/composability/builtin-func-features/src/builtin_func_proxy.rs b/contracts/feature-tests/composability/builtin-func-features/src/builtin_func_proxy.rs new file mode 100644 index 0000000000..5499deee5e --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/src/builtin_func_proxy.rs @@ -0,0 +1,10 @@ +multiversx_sc::imports!(); + +#[multiversx_sc::derive::proxy] +pub trait UserBuiltin { + #[endpoint(SetUserName)] + fn set_user_name(&self, name: &ManagedBuffer); + + #[endpoint(DeleteUserName)] + fn delete_user_name(&self); +} diff --git a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock new file mode 100644 index 0000000000..e740b5e0ee --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -0,0 +1,209 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", +] + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "builtin-func-features" +version = "0.0.0" +dependencies = [ + "multiversx-sc", +] + +[[package]] +name = "builtin-func-features-wasm" +version = "0.0.0" +dependencies = [ + "builtin-func-features", + "multiversx-sc-wasm-adapter", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" + +[[package]] +name = "multiversx-sc" +version = "0.43.2" +dependencies = [ + "bitflags", + "hashbrown", + "hex-literal", + "multiversx-sc-codec", + "multiversx-sc-derive", + "num-traits", +] + +[[package]] +name = "multiversx-sc-codec" +version = "0.18.1" +dependencies = [ + "arrayvec", + "multiversx-sc-codec-derive", +] + +[[package]] +name = "multiversx-sc-codec-derive" +version = "0.18.1" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "multiversx-sc-derive" +version = "0.43.2" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "radix_trie", + "syn", +] + +[[package]] +name = "multiversx-sc-wasm-adapter" +version = "0.43.2" +dependencies = [ + "multiversx-sc", +] + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" diff --git a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml new file mode 100644 index 0000000000..06127c0d40 --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "builtin-func-features-wasm" +version = "0.0.0" +authors = ["Andrei Marinica "] +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[profile.release] +codegen-units = 1 +opt-level = "z" +lto = true +debug = false +panic = "abort" + +[dependencies.builtin-func-features] +path = ".." + +[dependencies.multiversx-sc-wasm-adapter] +version = "0.43.2" +path = "../../../../../framework/wasm-adapter" + +[workspace] +members = ["."] diff --git a/contracts/feature-tests/composability/builtin-func-features/wasm/src/lib.rs b/contracts/feature-tests/composability/builtin-func-features/wasm/src/lib.rs new file mode 100644 index 0000000000..e28f76fb01 --- /dev/null +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/src/lib.rs @@ -0,0 +1,28 @@ +// Code generated by the multiversx-sc multi-contract system. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +// Init: 1 +// Endpoints: 2 +// Async Callback (empty): 1 +// Total number of exported functions: 4 + +#![no_std] +#![allow(internal_features)] +#![feature(lang_items)] + +multiversx_sc_wasm_adapter::allocator!(); +multiversx_sc_wasm_adapter::panic_handler!(); + +multiversx_sc_wasm_adapter::endpoints! { + builtin_func_features + ( + init => init + call_set_user_name => call_set_user_name + call_delete_user_name => call_delete_user_name + ) +} + +multiversx_sc_wasm_adapter::async_callback_empty! {} diff --git a/contracts/feature-tests/composability/scenarios/builtin_func_delete_user_name.scen.json b/contracts/feature-tests/composability/scenarios/builtin_func_delete_user_name.scen.json new file mode 100644 index 0000000000..7414fa5875 --- /dev/null +++ b/contracts/feature-tests/composability/scenarios/builtin_func_delete_user_name.scen.json @@ -0,0 +1,59 @@ +{ + "steps": [ + { + "step": "setState", + "accounts": { + "address:user-a": { + "nonce": "0", + "balance": "0" + }, + "address:user-b": { + "nonce": "0", + "balance": "0", + "username": "str:old-name" + }, + "sc:dns#00": { + "nonce": "0", + "balance": "0", + "code": "file:../builtin-func-features/output/builtin-func-features.wasm" + } + } + }, + { + "step": "scCall", + "id": "1", + "tx": { + "from": "address:user-a", + "to": "sc:dns#00", + "function": "call_delete_user_name", + "arguments": [ + "address:user-b" + ], + "gasLimit": "50,000,000", + "gasPrice": "0" + }, + "expect": { + "status": "0" + } + }, + { + "step": "checkState", + "accounts": { + "address:user-a": { + "nonce": "1", + "balance": "0" + }, + "address:user-b": { + "nonce": "0", + "balance": "0", + "username": "" + }, + "sc:dns#00": { + "nonce": "0", + "balance": "0", + "code": "file:../builtin-func-features/output/builtin-func-features.wasm" + } + } + } + ] +} diff --git a/contracts/feature-tests/composability/scenarios/builtin_func_set_user_name.scen.json b/contracts/feature-tests/composability/scenarios/builtin_func_set_user_name.scen.json new file mode 100644 index 0000000000..e52de6e930 --- /dev/null +++ b/contracts/feature-tests/composability/scenarios/builtin_func_set_user_name.scen.json @@ -0,0 +1,59 @@ +{ + "steps": [ + { + "step": "setState", + "accounts": { + "address:user-a": { + "nonce": "0", + "balance": "0" + }, + "address:user-b": { + "nonce": "0", + "balance": "0" + }, + "sc:dns#00": { + "nonce": "0", + "balance": "0", + "code": "file:../builtin-func-features/output/builtin-func-features.wasm" + } + } + }, + { + "step": "scCall", + "id": "1", + "tx": { + "from": "address:user-a", + "to": "sc:dns#00", + "function": "call_set_user_name", + "arguments": [ + "address:user-b", + "str:new-name" + ], + "gasLimit": "50,000,000", + "gasPrice": "0" + }, + "expect": { + "status": "0" + } + }, + { + "step": "checkState", + "accounts": { + "address:user-a": { + "nonce": "1", + "balance": "0" + }, + "address:user-b": { + "nonce": "0", + "balance": "0", + "username": "str:new-name" + }, + "sc:dns#00": { + "nonce": "0", + "balance": "0", + "code": "file:../builtin-func-features/output/builtin-func-features.wasm" + } + } + } + ] +} diff --git a/contracts/feature-tests/composability/tests/composability_scenario_go_test.rs b/contracts/feature-tests/composability/tests/composability_scenario_go_test.rs index 07a7394588..d6b5acbf3f 100644 --- a/contracts/feature-tests/composability/tests/composability_scenario_go_test.rs +++ b/contracts/feature-tests/composability/tests/composability_scenario_go_test.rs @@ -16,6 +16,17 @@ fn promises_single_transfer_go() { world().run("scenarios-promises/promises_single_transfer.scen.json"); } +#[test] +#[ignore = "waiting for VM 1.5"] +fn builtin_func_delete_user_name_go() { + world().run("scenarios/builtin_func_delete_user_name.scen.json"); +} + +#[test] +fn builtin_func_set_user_name_go() { + world().run("scenarios/builtin_func_set_user_name.scen.json"); +} + #[test] fn forw_queue_async_go() { world().run("scenarios/forw_queue_async.scen.json"); diff --git a/contracts/feature-tests/composability/tests/composability_scenario_rs_test.rs b/contracts/feature-tests/composability/tests/composability_scenario_rs_test.rs index a4b9aae3d8..463f336470 100644 --- a/contracts/feature-tests/composability/tests/composability_scenario_rs_test.rs +++ b/contracts/feature-tests/composability/tests/composability_scenario_rs_test.rs @@ -4,6 +4,10 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/feature-tests/composability"); + blockchain.register_contract( + "file:builtin-func-features/output/builtin-func-features.wasm", + builtin_func_features::ContractBuilder, + ); blockchain.register_contract( "file:forwarder-queue/output/forwarder-queue.wasm", forwarder_queue::ContractBuilder, @@ -48,6 +52,16 @@ fn promises_single_transfer_rs() { world().run("scenarios-promises/promises_single_transfer.scen.json"); } +#[test] +fn builtin_func_delete_user_name_rs() { + world().run("scenarios/builtin_func_delete_user_name.scen.json"); +} + +#[test] +fn builtin_func_set_user_name_rs() { + world().run("scenarios/builtin_func_set_user_name.scen.json"); +} + #[test] fn forw_queue_async_rs() { world().run("scenarios/forw_queue_async.scen.json"); diff --git a/framework/base/src/api/builtin_function_names.rs b/framework/base/src/api/builtin_function_names.rs index 2c3b28dd0b..108ed29016 100644 --- a/framework/base/src/api/builtin_function_names.rs +++ b/framework/base/src/api/builtin_function_names.rs @@ -12,4 +12,5 @@ pub const CHANGE_OWNER_BUILTIN_FUNC_NAME: &str = "ChangeOwnerAddress"; pub const CLAIM_DEVELOPER_REWARDS_FUNC_NAME: &str = "ClaimDeveloperRewards"; pub const SET_USERNAME_FUNC_NAME: &str = "SetUserName"; pub const MIGRATE_USERNAME_FUNC_NAME: &str = "migrateUserName"; +pub const DELETE_USERNAME_FUNC_NAME: &str = "DeleteUserName"; pub const UPGRADE_CONTRACT_FUNC_NAME: &str = "upgradeContract"; diff --git a/vm/src/tx_execution/builtin_function_mocks/builtin_func_container.rs b/vm/src/tx_execution/builtin_function_mocks/builtin_func_container.rs index 9c283e6fe6..c75286c541 100644 --- a/vm/src/tx_execution/builtin_function_mocks/builtin_func_container.rs +++ b/vm/src/tx_execution/builtin_function_mocks/builtin_func_container.rs @@ -5,7 +5,7 @@ use super::{ ESDTLocalBurn, ESDTLocalMint, ESDTNftAddQuantity, ESDTNftAddUri, ESDTNftBurn, ESDTNftCreate, ESDTNftUpdateAttributes, }, - general::{ChangeOwner, ClaimDeveloperRewards, SetUsername, UpgradeContract}, + general::{ChangeOwner, ClaimDeveloperRewards, SetUsername, UpgradeContract, DeleteUsername}, transfer::{ESDTMultiTransfer, ESDTNftTransfer, ESDTTransfer}, BuiltinFunctionEsdtTransferInfo, }; @@ -110,9 +110,10 @@ impl<'a> BuiltinFunctionCall<'a> { CHANGE_OWNER_BUILTIN_FUNC_NAME => self.execute_bf(ChangeOwner, f), CLAIM_DEVELOPER_REWARDS_FUNC_NAME => self.execute_bf(ClaimDeveloperRewards, f), SET_USERNAME_FUNC_NAME => self.execute_bf(SetUsername, f), + DELETE_USERNAME_FUNC_NAME => self.execute_bf(DeleteUsername, f), UPGRADE_CONTRACT_FUNC_NAME => self.execute_bf(UpgradeContract, f), MIGRATE_USERNAME_FUNC_NAME => { - panic!("builtin function {MIGRATE_USERNAME_FUNC_NAME} not implemented") + panic!("builtin function {MIGRATE_USERNAME_FUNC_NAME} was dropped") }, _ => or_else(self.tx_input, self.tx_cache, f), } diff --git a/vm/src/tx_execution/builtin_function_mocks/general/mod.rs b/vm/src/tx_execution/builtin_function_mocks/general.rs similarity index 78% rename from vm/src/tx_execution/builtin_function_mocks/general/mod.rs rename to vm/src/tx_execution/builtin_function_mocks/general.rs index c32e6cdf95..b7714c3f18 100644 --- a/vm/src/tx_execution/builtin_function_mocks/general/mod.rs +++ b/vm/src/tx_execution/builtin_function_mocks/general.rs @@ -3,8 +3,10 @@ mod claim_developer_rewards_mock; mod migrate_username_mock; mod set_username_mock; mod upgrade_contract; +mod delete_username_mock; pub use change_owner_mock::*; pub use claim_developer_rewards_mock::*; pub use set_username_mock::*; pub use upgrade_contract::*; +pub use delete_username_mock::DeleteUsername; diff --git a/vm/src/tx_execution/builtin_function_mocks/general/delete_username_mock.rs b/vm/src/tx_execution/builtin_function_mocks/general/delete_username_mock.rs new file mode 100644 index 0000000000..c697f76859 --- /dev/null +++ b/vm/src/tx_execution/builtin_function_mocks/general/delete_username_mock.rs @@ -0,0 +1,37 @@ +use crate::tx_execution::{builtin_function_names::DELETE_USERNAME_FUNC_NAME, BlockchainVMRef}; + +use crate::tx_mock::{BlockchainUpdate, TxCache, TxInput, TxResult}; + +use super::super::builtin_func_trait::BuiltinFunction; + +pub struct DeleteUsername; + +impl BuiltinFunction for DeleteUsername { + fn name(&self) -> &str { + DELETE_USERNAME_FUNC_NAME + } + + fn execute( + &self, + tx_input: TxInput, + tx_cache: TxCache, + _vm: &BlockchainVMRef, + _f: F, + ) -> (TxResult, BlockchainUpdate) + where + F: FnOnce(), + { + if !tx_input.args.is_empty() { + return ( + TxResult::from_vm_error("DeleteUserName expects no arguments"), + BlockchainUpdate::empty(), + ); + } + + tx_cache.with_account_mut(&tx_input.to, |account| { + account.username = Vec::new(); + }); + + (TxResult::empty(), tx_cache.into_blockchain_updates()) + } +} diff --git a/vm/src/tx_execution/builtin_function_mocks/vm_builtin_function_names.rs b/vm/src/tx_execution/builtin_function_mocks/vm_builtin_function_names.rs index 2c3b28dd0b..108ed29016 100644 --- a/vm/src/tx_execution/builtin_function_mocks/vm_builtin_function_names.rs +++ b/vm/src/tx_execution/builtin_function_mocks/vm_builtin_function_names.rs @@ -12,4 +12,5 @@ pub const CHANGE_OWNER_BUILTIN_FUNC_NAME: &str = "ChangeOwnerAddress"; pub const CLAIM_DEVELOPER_REWARDS_FUNC_NAME: &str = "ClaimDeveloperRewards"; pub const SET_USERNAME_FUNC_NAME: &str = "SetUserName"; pub const MIGRATE_USERNAME_FUNC_NAME: &str = "migrateUserName"; +pub const DELETE_USERNAME_FUNC_NAME: &str = "DeleteUserName"; pub const UPGRADE_CONTRACT_FUNC_NAME: &str = "upgradeContract"; From 12f78edf1acec9b9d1cda6b09639e5145e5c7e81 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 25 Aug 2023 02:05:59 +0300 Subject: [PATCH 31/54] fmt --- .../builtin_function_mocks/builtin_func_container.rs | 2 +- vm/src/tx_execution/builtin_function_mocks/general.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/vm/src/tx_execution/builtin_function_mocks/builtin_func_container.rs b/vm/src/tx_execution/builtin_function_mocks/builtin_func_container.rs index c75286c541..8b5a302377 100644 --- a/vm/src/tx_execution/builtin_function_mocks/builtin_func_container.rs +++ b/vm/src/tx_execution/builtin_function_mocks/builtin_func_container.rs @@ -5,7 +5,7 @@ use super::{ ESDTLocalBurn, ESDTLocalMint, ESDTNftAddQuantity, ESDTNftAddUri, ESDTNftBurn, ESDTNftCreate, ESDTNftUpdateAttributes, }, - general::{ChangeOwner, ClaimDeveloperRewards, SetUsername, UpgradeContract, DeleteUsername}, + general::{ChangeOwner, ClaimDeveloperRewards, DeleteUsername, SetUsername, UpgradeContract}, transfer::{ESDTMultiTransfer, ESDTNftTransfer, ESDTTransfer}, BuiltinFunctionEsdtTransferInfo, }; diff --git a/vm/src/tx_execution/builtin_function_mocks/general.rs b/vm/src/tx_execution/builtin_function_mocks/general.rs index b7714c3f18..44f3639152 100644 --- a/vm/src/tx_execution/builtin_function_mocks/general.rs +++ b/vm/src/tx_execution/builtin_function_mocks/general.rs @@ -1,12 +1,12 @@ mod change_owner_mock; mod claim_developer_rewards_mock; +mod delete_username_mock; mod migrate_username_mock; mod set_username_mock; mod upgrade_contract; -mod delete_username_mock; pub use change_owner_mock::*; pub use claim_developer_rewards_mock::*; +pub use delete_username_mock::DeleteUsername; pub use set_username_mock::*; pub use upgrade_contract::*; -pub use delete_username_mock::DeleteUsername; From d080801cf7b866dcac8d51ff2ec9aa2acc4a8d2b Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 25 Aug 2023 02:33:14 +0300 Subject: [PATCH 32/54] cleaned up some leftover dependencies --- Cargo.lock | 106 +++++++++--------- .../builtin-func-features/Cargo.toml | 5 - .../composability/forwarder-raw/Cargo.toml | 5 - .../promises-features/Cargo.toml | 5 - .../composability/proxy-test-first/Cargo.toml | 5 - .../composability/recursive-caller/Cargo.toml | 5 - .../lottery-erc20/Cargo.toml | 5 - 7 files changed, 50 insertions(+), 86 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e1d91f87af..58652d2cb9 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -121,24 +121,23 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" [[package]] name = "anstyle-parse" @@ -160,9 +159,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" dependencies = [ "anstyle", "windows-sys", @@ -199,9 +198,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -379,7 +378,6 @@ version = "0.0.0" dependencies = [ "multiversx-sc", "multiversx-sc-scenario", - "multiversx-sc-wasm-adapter", ] [[package]] @@ -431,9 +429,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", "libc", @@ -492,9 +490,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.22" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b417ae4361bca3f5de378294fc7472d3c4ed86a5ef9f49e93ae722f432aae8d2" +checksum = "1d5f1946157a96594eb2d2c10eb7ad9a2b27518cb3000209dec700c35df9197d" dependencies = [ "clap_builder", "clap_derive", @@ -503,9 +501,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.3.22" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c90dc0f0e42c64bff177ca9d7be6fcc9ddb0f26a6e062174a61c84dd6c644d4" +checksum = "78116e32a042dd73c2901f0dc30790d20ff3447f3e3472fad359e8c3d282bcd6" dependencies = [ "anstream", "anstyle", @@ -516,9 +514,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" dependencies = [ "heck", "proc-macro2", @@ -528,9 +526,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] name = "colorchoice" @@ -806,9 +804,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" [[package]] name = "digest" @@ -903,9 +901,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -1251,7 +1249,6 @@ version = "0.0.0" dependencies = [ "multiversx-sc", "multiversx-sc-scenario", - "multiversx-sc-wasm-adapter", ] [[package]] @@ -1391,9 +1388,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "globset" @@ -1410,9 +1407,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -1865,7 +1862,6 @@ dependencies = [ "erc20", "multiversx-sc", "multiversx-sc-scenario", - "multiversx-sc-wasm-adapter", ] [[package]] @@ -2313,9 +2309,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -2353,9 +2349,9 @@ dependencies = [ [[package]] name = "object" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" dependencies = [ "memchr", ] @@ -2643,7 +2639,6 @@ version = "0.0.0" dependencies = [ "multiversx-sc", "multiversx-sc-scenario", - "multiversx-sc-wasm-adapter", "vault", ] @@ -2679,7 +2674,6 @@ dependencies = [ "hex-literal", "multiversx-sc", "multiversx-sc-scenario", - "multiversx-sc-wasm-adapter", ] [[package]] @@ -2794,7 +2788,6 @@ version = "0.0.0" dependencies = [ "multiversx-sc", "multiversx-sc-scenario", - "multiversx-sc-wasm-adapter", "vault", ] @@ -2846,9 +2839,9 @@ checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ "base64 0.21.2", "bytes", @@ -3091,18 +3084,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.183" +version = "1.0.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +checksum = "9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.183" +version = "1.0.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670" dependencies = [ "proc-macro2", "quote", @@ -3267,9 +3260,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] @@ -3362,9 +3355,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.7.1" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", "fastrand", @@ -3414,9 +3407,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +checksum = "0bb39ee79a6d8de55f48f2293a830e040392f1c5f16e336bdd1788cd0aadce07" dependencies = [ "deranged", "serde", @@ -3921,20 +3914,21 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d09770118a7eb1ccaf4a594a221334119a44a814fcb0d31c5b85e83e97227a97" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys", ] [[package]] diff --git a/contracts/feature-tests/composability/builtin-func-features/Cargo.toml b/contracts/feature-tests/composability/builtin-func-features/Cargo.toml index b784f8882d..abc8864694 100644 --- a/contracts/feature-tests/composability/builtin-func-features/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/Cargo.toml @@ -12,11 +12,6 @@ path = "src/builtin_func_features.rs" version = "0.43.2" path = "../../../../framework/base" -[dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" -path = "../../../../framework/wasm-adapter" -optional = true - [dev-dependencies.multiversx-sc-scenario] version = "0.43.2" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder-raw/Cargo.toml b/contracts/feature-tests/composability/forwarder-raw/Cargo.toml index ea711f8d4b..90fb7168c0 100644 --- a/contracts/feature-tests/composability/forwarder-raw/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/Cargo.toml @@ -12,11 +12,6 @@ path = "src/forwarder_raw.rs" version = "0.43.2" path = "../../../../framework/base" -[dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" -path = "../../../../framework/wasm-adapter" -optional = true - [dev-dependencies.multiversx-sc-scenario] version = "0.43.2" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/promises-features/Cargo.toml b/contracts/feature-tests/composability/promises-features/Cargo.toml index 469370bdd9..eaba0890d1 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -16,11 +16,6 @@ version = "0.43.2" path = "../../../../framework/base" features = ["promises"] -[dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" -path = "../../../../framework/wasm-adapter" -optional = true - [dev-dependencies.multiversx-sc-scenario] version = "0.43.2" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/proxy-test-first/Cargo.toml b/contracts/feature-tests/composability/proxy-test-first/Cargo.toml index 189a95b19c..6d577ea03b 100644 --- a/contracts/feature-tests/composability/proxy-test-first/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/Cargo.toml @@ -16,11 +16,6 @@ version = "0.43.2" path = "../../../../framework/base" features = ["alloc"] -[dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" -path = "../../../../framework/wasm-adapter" -optional = true - [dev-dependencies.multiversx-sc-scenario] version = "0.43.2" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/recursive-caller/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/Cargo.toml index 99ee291052..0e53064758 100644 --- a/contracts/feature-tests/composability/recursive-caller/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/Cargo.toml @@ -15,11 +15,6 @@ path = "../vault" version = "0.43.2" path = "../../../../framework/base" -[dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" -path = "../../../../framework/wasm-adapter" -optional = true - [dev-dependencies.multiversx-sc-scenario] version = "0.43.2" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/Cargo.toml b/contracts/feature-tests/erc-style-contracts/lottery-erc20/Cargo.toml index 098e1d525d..7d0d05a970 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/Cargo.toml @@ -16,11 +16,6 @@ version = "0.43.2" path = "../../../../framework/base" features = ["alloc"] -[dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" -path = "../../../../framework/wasm-adapter" -optional = true - [dev-dependencies.multiversx-sc-scenario] version = "0.43.2" path = "../../../../framework/scenario" From 0cdc69ced898b851cc984498a31cbab8c5f3b491 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Mon, 28 Aug 2023 12:48:39 +0300 Subject: [PATCH 33/54] all tests pass --- .../multisig/tests/multisig_blackbox_test.rs | 23 +++++++------------ .../src/scenario/model/step/sc_call_step.rs | 9 ++++++-- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 55c21a3360..453bedfc97 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -50,8 +50,8 @@ enum Action { AddProposer(Address), RemoveUser(Address), ChangeQuorum(usize), - SendTransferExecute(Address, u64, String, MultiValueVec>), - SendAsyncCall(Address, u64, String, MultiValueVec>), + SendTransferExecute(Address, u64, OptionalValue, MultiValueVec>), + SendAsyncCall(Address, u64, OptionalValue, MultiValueVec>), SCDeployFromSource(u64, Address, CodeMetadata, MultiValueVec>), SCUpgradeFromSource(Address, u64, Address, CodeMetadata, MultiValueVec>), } @@ -396,7 +396,6 @@ fn test_change_quorum() { } #[test] -#[ignore = "not yet implemented"] fn test_transfer_execute_to_user() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); @@ -415,13 +414,6 @@ fn test_transfer_execute_to_user() { .call(state.multisig_contract.deposit()), ); - state - .world - .check_state_step(CheckStateStep::new().put_account( - PROPOSER_ADDRESS_EXPR, - CheckAccount::new().balance("99,999,900"), - )); - state.world.check_state_step( CheckStateStep::new() .put_account(MULTISIG_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), @@ -429,6 +421,7 @@ fn test_transfer_execute_to_user() { // failed attempt let new_user_address = AddressValue::from(NEW_USER_ADDRESS_EXPR).to_address(); + let opt_function: OptionalValue = OptionalValue::None; state.world.sc_call( ScCallStep::new() @@ -436,7 +429,7 @@ fn test_transfer_execute_to_user() { .call(state.multisig_contract.propose_transfer_execute( new_user_address.clone(), 0u64, - "".to_string(), + opt_function.clone(), MultiValueVec::>::new(), )) .expect(TxExpect::err(4, "str:proposed action has no effect")), @@ -446,7 +439,7 @@ fn test_transfer_execute_to_user() { let action_id = state.propose(Action::SendTransferExecute( new_user_address.clone(), AMOUNT.parse().unwrap(), - "".to_string(), + opt_function, MultiValueVec::>::new(), )); state.sign(action_id); @@ -467,7 +460,7 @@ fn test_transfer_execute_sc_all() { let action_id = state.propose(Action::SendTransferExecute( adder_contract_address.clone(), 0u64, - "add".to_string(), + OptionalValue::Some("add".to_string()), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), )); state.sign(action_id); @@ -491,7 +484,7 @@ fn test_async_call_to_sc() { let action_id = state.propose(Action::SendAsyncCall( adder_contract_address.clone(), 0u64, - "add".to_string(), + OptionalValue::Some("add".to_string()), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), )); state.sign(action_id); @@ -541,7 +534,7 @@ fn test_deploy_and_upgrade_from_source() { let action_id = state.propose(Action::SendTransferExecute( new_adder_address.clone(), 0u64, - "add".to_string(), + OptionalValue::Some("add".to_string()), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), )); state.sign(action_id); diff --git a/framework/scenario/src/scenario/model/step/sc_call_step.rs b/framework/scenario/src/scenario/model/step/sc_call_step.rs index 7fbe5dbed8..0747f7d491 100644 --- a/framework/scenario/src/scenario/model/step/sc_call_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_call_step.rs @@ -122,8 +122,13 @@ impl ScCallStep { let (to_str, function, egld_value_expr, scenario_args) = process_contract_call(contract_call); self = self.to(to_str.as_str()); - self = self.function(function.as_str()); - self = self.egld_value(egld_value_expr); + + if self.tx.function.is_empty() { + self = self.function(function.as_str()); + } + if self.tx.egld_value.value == 0u32.into() { + self = self.egld_value(egld_value_expr); + } for arg in scenario_args { self = self.argument(arg.as_str()); } From cbc919b3e3f0958bb0f8952b3ce79095c63b25cd Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Mon, 28 Aug 2023 13:22:34 +0300 Subject: [PATCH 34/54] refactor blackbox part 1 --- .../multisig/tests/multisig_blackbox_test.rs | 252 ++++++++++-------- 1 file changed, 135 insertions(+), 117 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 453bedfc97..2b4c7e0252 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -1,5 +1,3 @@ -#![allow(unused)] - use adder::ProxyTrait as _; use multisig::{ multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, user_role::UserRole, @@ -10,7 +8,7 @@ use multiversx_sc::{ multi_types::{MultiValueVec, OptionalValue}, test_util::top_encode_to_vec_u8_or_panic, }, - storage::mappers::{SingleValue, SingleValueMapper}, + storage::mappers::SingleValue, types::{Address, CodeMetadata}, }; use multiversx_sc_scenario::{ @@ -45,20 +43,8 @@ fn world() -> ScenarioWorld { blockchain } -enum Action { - AddBoardMember(Address), - AddProposer(Address), - RemoveUser(Address), - ChangeQuorum(usize), - SendTransferExecute(Address, u64, OptionalValue, MultiValueVec>), - SendAsyncCall(Address, u64, OptionalValue, MultiValueVec>), - SCDeployFromSource(u64, Address, CodeMetadata, MultiValueVec>), - SCUpgradeFromSource(Address, u64, Address, CodeMetadata, MultiValueVec>), -} - struct MultisigTestState { world: ScenarioWorld, - owner_address: Address, proposer_address: Address, board_member_address: Address, multisig_contract: MultisigContract, @@ -81,7 +67,6 @@ impl MultisigTestState { .new_address(ADDER_OWNER_ADDRESS_EXPR, 1, ADDER_ADDRESS_EXPR), ); - let owner_address = AddressValue::from(OWNER_ADDRESS_EXPR).to_address(); let proposer_address = AddressValue::from(PROPOSER_ADDRESS_EXPR).to_address(); let board_member_address = AddressValue::from(BOARD_MEMBER_ADDRESS_EXPR).to_address(); let multisig_contract = MultisigContract::new(MULTISIG_ADDRESS_EXPR); @@ -89,7 +74,6 @@ impl MultisigTestState { Self { world, - owner_address, proposer_address, board_member_address, multisig_contract, @@ -117,7 +101,7 @@ impl MultisigTestState { self.sign(action_id); self.perform(action_id); - self.check_user_role(&self.proposer_address.clone(), UserRole::Proposer); + self.expect_user_role(&self.proposer_address.clone(), UserRole::Proposer); self } @@ -135,73 +119,109 @@ impl MultisigTestState { self } - fn propose(&mut self, action: Action) -> usize { - match action { - Action::AddBoardMember(board_member_address) => self.world.sc_call_get_result( - ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract - .propose_add_board_member(board_member_address), - ), - ), - Action::AddProposer(proposer_address) => self.world.sc_call_get_result( - ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract - .propose_add_proposer(proposer_address), - ), + fn propose_add_board_member(&mut self, board_member_address: Address) -> usize { + self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_add_board_member(board_member_address), ), - Action::RemoveUser(user_address) => self.world.sc_call_get_result( - ScCallStep::new() - .from(PROPOSER_ADDRESS_EXPR) - .call(self.multisig_contract.propose_remove_user(user_address)), + ) + } + + fn propose_add_proposer(&mut self, proposer_address: Address) -> usize { + self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_add_proposer(proposer_address), ), - Action::ChangeQuorum(new_quorum) => self.world.sc_call_get_result( - ScCallStep::new() - .from(PROPOSER_ADDRESS_EXPR) - .call(self.multisig_contract.propose_change_quorum(new_quorum)), + ) + } + + fn propose_change_quorum(&mut self, new_quorum: usize) -> usize { + self.world.sc_call_get_result( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .call(self.multisig_contract.propose_change_quorum(new_quorum)), + ) + } + + fn propose_transfer_execute( + &mut self, + to: Address, + egld_amount: u64, + opt_function: OptionalValue, + arguments: MultiValueVec>, + ) -> usize { + self.world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_transfer_execute( + to, + egld_amount, + opt_function, + arguments, + ), + )) + } + + fn propose_async_call( + &mut self, + to: Address, + egld_amount: u64, + opt_function: OptionalValue, + arguments: MultiValueVec>, + ) -> usize { + self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_async_call(to, egld_amount, opt_function, arguments), ), - Action::SendTransferExecute(to, egld_amount, opt_function, arguments) => self - .world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_transfer_execute( - to, - egld_amount, - opt_function, - arguments, - ), - )), - Action::SendAsyncCall(to, egld_amount, opt_function, arguments) => self - .world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_async_call( - to, - egld_amount, - opt_function, - arguments, - ), - )), - Action::SCDeployFromSource(amount, source, code_metadata, arguments) => self - .world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_sc_deploy_from_source( - amount, - source, - code_metadata, - arguments, - ), - )), - Action::SCUpgradeFromSource(sc_address, amount, source, code_metadata, arguments) => { - self.world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_sc_upgrade_from_source( - sc_address, - amount, - source, - code_metadata, - arguments, - ), - )) - }, - } + ) + } + + fn propose_remove_user(&mut self, user_address: Address) -> usize { + self.world.sc_call_get_result( + ScCallStep::new() + .from(PROPOSER_ADDRESS_EXPR) + .call(self.multisig_contract.propose_remove_user(user_address)), + ) + } + + fn propose_sc_deploy_from_source( + &mut self, + amount: u64, + source: Address, + code_metadata: CodeMetadata, + arguments: MultiValueVec>, + ) -> usize { + self.world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_sc_deploy_from_source( + amount, + source, + code_metadata, + arguments, + ), + )) + } + + fn propose_sc_upgrade_from_source( + &mut self, + sc_address: Address, + amount: u64, + source: Address, + code_metadata: CodeMetadata, + arguments: MultiValueVec>, + ) -> usize { + self.world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_sc_upgrade_from_source( + sc_address, + amount, + source, + code_metadata, + arguments, + ), + )) } fn perform(&mut self, action_id: usize) { @@ -212,7 +232,7 @@ impl MultisigTestState { ); } - fn perform_with_expect(&mut self, action_id: usize, err_message: &str) { + fn perform_and_expect_err(&mut self, action_id: usize, err_message: &str) { self.world.sc_call( ScCallStep::new() .from(BOARD_MEMBER_ADDRESS_EXPR) @@ -229,13 +249,11 @@ impl MultisigTestState { ); } - fn check_user_role(&mut self, user: &Address, expected_user_role: UserRole) { - self.world.sc_query_use_result( - ScQueryStep::new().call(self.multisig_contract.user_role(user.clone())), - |r| { - let user_role: UserRole = r.result.unwrap(); - assert_eq!(user_role, expected_user_role); - }, + fn expect_user_role(&mut self, user: &Address, expected_user_role: UserRole) { + self.world.sc_query( + ScQueryStep::new() + .call(self.multisig_contract.user_role(user.clone())) + .expect_value(expected_user_role), ); } } @@ -252,13 +270,13 @@ fn test_add_board_member() { SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), ); - state.check_user_role(&new_board_member_address, UserRole::None); + state.expect_user_role(&new_board_member_address, UserRole::None); - let action_id = state.propose(Action::AddBoardMember(new_board_member_address.clone())); + let action_id = state.propose_add_board_member(new_board_member_address.clone()); state.sign(action_id); state.perform(action_id); - state.check_user_role(&new_board_member_address, UserRole::BoardMember); + state.expect_user_role(&new_board_member_address, UserRole::BoardMember); state.world.sc_query_use_result( ScQueryStep::new().call(state.multisig_contract.get_all_board_members()), @@ -283,13 +301,13 @@ fn test_add_proposer() { SetStateStep::new().put_account(NEW_PROPOSER_ADDRESS_EXPR, Account::new().nonce(1)), ); - state.check_user_role(&new_proposer_address, UserRole::None); + state.expect_user_role(&new_proposer_address, UserRole::None); - let action_id = state.propose(Action::AddProposer(new_proposer_address.clone())); + let action_id = state.propose_add_proposer(new_proposer_address.clone()); state.sign(action_id); state.perform(action_id); - state.check_user_role(&new_proposer_address, UserRole::Proposer); + state.expect_user_role(&new_proposer_address, UserRole::Proposer); state.world.sc_query_use_result( ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), @@ -307,13 +325,13 @@ fn test_remove_proposer() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - state.check_user_role(&state.proposer_address.clone(), UserRole::Proposer); + state.expect_user_role(&state.proposer_address.clone(), UserRole::Proposer); - let action_id = state.propose(Action::RemoveUser(state.proposer_address.clone())); + let action_id = state.propose_remove_user(state.proposer_address.clone()); state.sign(action_id); state.perform(action_id); - state.check_user_role(&state.proposer_address.clone(), UserRole::None); + state.expect_user_role(&state.proposer_address.clone(), UserRole::None); state.world.sc_query_use_result( ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), @@ -329,9 +347,9 @@ fn test_try_remove_all_board_members() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let action_id = state.propose(Action::RemoveUser(state.board_member_address.clone())); + let action_id = state.propose_remove_user(state.board_member_address.clone()); state.sign(action_id); - state.perform_with_expect(action_id, "quorum cannot exceed board size") + state.perform_and_expect_err(action_id, "quorum cannot exceed board size") } #[test] @@ -341,9 +359,9 @@ fn test_change_quorum() { let new_quorum = 2; // try change quorum > board size - let action_id = state.propose(Action::ChangeQuorum(new_quorum)); + let action_id = state.propose_change_quorum(new_quorum); state.sign(action_id); - state.perform_with_expect(action_id, "quorum cannot exceed board size"); + state.perform_and_expect_err(action_id, "quorum cannot exceed board size"); // try discard before unsigning state.world.sc_call( @@ -385,12 +403,12 @@ fn test_change_quorum() { SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), ); - let action_id = state.propose(Action::AddBoardMember(new_board_member_address.clone())); + let action_id = state.propose_add_board_member(new_board_member_address.clone()); state.sign(action_id); state.perform(action_id); // change quorum to 2 - let action_id = state.propose(Action::ChangeQuorum(new_quorum)); + let action_id = state.propose_change_quorum(new_quorum); state.sign(action_id); state.perform(action_id); } @@ -436,12 +454,12 @@ fn test_transfer_execute_to_user() { ); // propose - let action_id = state.propose(Action::SendTransferExecute( + let action_id = state.propose_transfer_execute( new_user_address.clone(), AMOUNT.parse().unwrap(), opt_function, MultiValueVec::>::new(), - )); + ); state.sign(action_id); state.perform(action_id); @@ -457,12 +475,12 @@ fn test_transfer_execute_sc_all() { state.deploy_multisig_contract().deploy_adder_contract(); let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - let action_id = state.propose(Action::SendTransferExecute( + let action_id = state.propose_transfer_execute( adder_contract_address.clone(), 0u64, OptionalValue::Some("add".to_string()), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - )); + ); state.sign(action_id); state.perform(action_id); @@ -481,12 +499,12 @@ fn test_async_call_to_sc() { state.deploy_multisig_contract().deploy_adder_contract(); let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - let action_id = state.propose(Action::SendAsyncCall( + let action_id = state.propose_async_call( adder_contract_address.clone(), 0u64, OptionalValue::Some("add".to_string()), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - )); + ); state.sign(action_id); state.perform(action_id); @@ -514,12 +532,12 @@ fn test_deploy_and_upgrade_from_source() { let new_adder_address = AddressValue::from(NEW_ADDER_ADDRESS_EXPR).to_address(); let adder_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - let action_id = state.propose(Action::SCDeployFromSource( + let action_id = state.propose_sc_deploy_from_source( 0u64, adder_address.clone(), CodeMetadata::all(), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - )); + ); state.sign(action_id); state.world.sc_call_use_result( ScCallStep::new() @@ -531,12 +549,12 @@ fn test_deploy_and_upgrade_from_source() { }, ); - let action_id = state.propose(Action::SendTransferExecute( + let action_id = state.propose_transfer_execute( new_adder_address.clone(), 0u64, OptionalValue::Some("add".to_string()), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - )); + ); state.sign(action_id); state.perform(action_id); @@ -565,13 +583,13 @@ fn test_deploy_and_upgrade_from_source() { let factorial_address = AddressValue::from(FACTORIAL_ADDRESS_EXPR).to_address(); - let action_id = state.propose(Action::SCUpgradeFromSource( + let action_id = state.propose_sc_upgrade_from_source( adder_address.clone(), 0u64, factorial_address.clone(), CodeMetadata::all(), MultiValueVec::new(), - )); + ); state.sign(action_id); state.perform(action_id); From 77d5e0a49ecc340a539d29c18ff1c4a40d730881 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Mon, 28 Aug 2023 13:35:39 +0300 Subject: [PATCH 35/54] blackbox refactor final part --- .../multisig/tests/multisig_blackbox_test.rs | 66 ++++++++++--------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 2b4c7e0252..404bfac626 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -29,7 +29,9 @@ const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; const MULTISIG_PATH_EXPR: &str = "file:output/multisig.wasm"; const OWNER_ADDRESS_EXPR: &str = "address:owner"; const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; +const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; const QUORUM_SIZE: usize = 1; +const STATUS_ERR_CODE_EXPR: u64 = 4; type MultisigContract = ContractInfo>; type AdderContract = ContractInfo>; @@ -60,7 +62,7 @@ impl MultisigTestState { .new_address(OWNER_ADDRESS_EXPR, 1, MULTISIG_ADDRESS_EXPR) .put_account( PROPOSER_ADDRESS_EXPR, - Account::new().nonce(1).balance("100,000,000"), + Account::new().nonce(1).balance(PROPOSER_BALANCE_EXPR), ) .put_account(BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)) .put_account(ADDER_OWNER_ADDRESS_EXPR, Account::new().nonce(1)) @@ -237,7 +239,10 @@ impl MultisigTestState { ScCallStep::new() .from(BOARD_MEMBER_ADDRESS_EXPR) .call(self.multisig_contract.perform_action_endpoint(action_id)) - .expect(TxExpect::err(4, "str:".to_string() + err_message)), + .expect(TxExpect::err( + STATUS_ERR_CODE_EXPR, + "str:".to_string() + err_message, + )), ); } @@ -369,7 +374,7 @@ fn test_change_quorum() { .from(BOARD_MEMBER_ADDRESS_EXPR) .call(state.multisig_contract.discard_action(action_id)) .expect(TxExpect::err( - 4, + STATUS_ERR_CODE_EXPR, "str:cannot discard action with valid signatures", )), ); @@ -392,7 +397,10 @@ fn test_change_quorum() { ScCallStep::new() .from(BOARD_MEMBER_ADDRESS_EXPR) .call(state.multisig_contract.sign(action_id)) - .expect(TxExpect::err(4, "str:action does not exist")), + .expect(TxExpect::err( + STATUS_ERR_CODE_EXPR, + "str:action does not exist", + )), ); // add another board member @@ -450,7 +458,10 @@ fn test_transfer_execute_to_user() { opt_function.clone(), MultiValueVec::>::new(), )) - .expect(TxExpect::err(4, "str:proposed action has no effect")), + .expect(TxExpect::err( + STATUS_ERR_CODE_EXPR, + "str:proposed action has no effect", + )), ); // propose @@ -484,13 +495,11 @@ fn test_transfer_execute_sc_all() { state.sign(action_id); state.perform(action_id); - state - .world - .sc_query_use_result(ScQueryStep::new().call(state.adder_contract.sum()), |r| { - let result: SingleValue = r.result.unwrap(); - let expected_sum = 10u64; - assert_eq!(result.into(), expected_sum.into()); - }); + state.world.sc_query( + ScQueryStep::new() + .call(state.adder_contract.sum()) + .expect_value(SingleValue::from(BigUint::from(10u64))), + ); } #[test] @@ -508,13 +517,11 @@ fn test_async_call_to_sc() { state.sign(action_id); state.perform(action_id); - state - .world - .sc_query_use_result(ScQueryStep::new().call(state.adder_contract.sum()), |r| { - let result: SingleValue = r.result.unwrap(); - let expected_sum = 10u64; - assert_eq!(result.into(), expected_sum.into()); - }); + state.world.sc_query( + ScQueryStep::new() + .call(state.adder_contract.sum()) + .expect_value(SingleValue::from(BigUint::from(10u64))), + ); } #[test] @@ -539,14 +546,11 @@ fn test_deploy_and_upgrade_from_source() { MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), ); state.sign(action_id); - state.world.sc_call_use_result( + state.world.sc_call( ScCallStep::new() .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.perform_action_endpoint(action_id)), - |r| { - let result: OptionalValue
= r.result.unwrap(); - assert_eq!(result.into_option().unwrap(), new_adder_address); - }, + .call(state.multisig_contract.perform_action_endpoint(action_id)) + .expect_value(OptionalValue::Some(new_adder_address.clone())), ); let action_id = state.propose_transfer_execute( @@ -560,13 +564,11 @@ fn test_deploy_and_upgrade_from_source() { let mut new_adder_contract = AdderContract::new(NEW_ADDER_ADDRESS_EXPR); - state - .world - .sc_query_use_result(ScQueryStep::new().call(new_adder_contract.sum()), |r| { - let result: SingleValue = r.result.unwrap(); - let expected_sum = 10u64; - assert_eq!(result.into(), expected_sum.into()); - }); + state.world.sc_query( + ScQueryStep::new() + .call(new_adder_contract.sum()) + .expect_value(SingleValue::from(BigUint::from(10u64))), + ); let factorial_code = state.world.code_expression(FACTORIAL_PATH_EXPR); From 3e0530135d67253e805aff315418752d5672f859 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Tue, 29 Aug 2023 12:17:00 +0300 Subject: [PATCH 36/54] cleanup --- .../multisig/tests/multisig_blackbox_test.rs | 134 ++++++++---------- 1 file changed, 61 insertions(+), 73 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 404bfac626..1ff87d1d37 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -9,7 +9,7 @@ use multiversx_sc::{ test_util::top_encode_to_vec_u8_or_panic, }, storage::mappers::SingleValue, - types::{Address, CodeMetadata}, + types::{Address, CodeMetadata, ContractCallNoPayment}, }; use multiversx_sc_scenario::{ api::StaticApi, @@ -51,6 +51,7 @@ struct MultisigTestState { board_member_address: Address, multisig_contract: MultisigContract, adder_contract: AdderContract, + adder_address: Address, } impl MultisigTestState { @@ -73,6 +74,7 @@ impl MultisigTestState { let board_member_address = AddressValue::from(BOARD_MEMBER_ADDRESS_EXPR).to_address(); let multisig_contract = MultisigContract::new(MULTISIG_ADDRESS_EXPR); let adder_contract = AdderContract::new(ADDER_ADDRESS_EXPR); + let adder_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); Self { world, @@ -80,6 +82,7 @@ impl MultisigTestState { board_member_address, multisig_contract, adder_contract, + adder_address, } } @@ -151,16 +154,15 @@ impl MultisigTestState { &mut self, to: Address, egld_amount: u64, - opt_function: OptionalValue, - arguments: MultiValueVec>, + contract_call: ContractCallNoPayment, ) -> usize { self.world .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( self.multisig_contract.propose_transfer_execute( to, egld_amount, - opt_function, - arguments, + contract_call.endpoint_name, + contract_call.arg_buffer.into_multi_value_encoded(), ), )) } @@ -169,15 +171,17 @@ impl MultisigTestState { &mut self, to: Address, egld_amount: u64, - opt_function: OptionalValue, - arguments: MultiValueVec>, + contract_call: ContractCallNoPayment, ) -> usize { - self.world.sc_call_get_result( - ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract - .propose_async_call(to, egld_amount, opt_function, arguments), - ), - ) + self.world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract.propose_async_call( + to, + egld_amount, + contract_call.endpoint_name, + contract_call.arg_buffer.into_multi_value_encoded(), + ), + )) } fn propose_remove_user(&mut self, user_address: Address) -> usize { @@ -282,15 +286,13 @@ fn test_add_board_member() { state.perform(action_id); state.expect_user_role(&new_board_member_address, UserRole::BoardMember); - - state.world.sc_query_use_result( - ScQueryStep::new().call(state.multisig_contract.get_all_board_members()), - |r| { - let board_members: MultiValueVec
= r.result.unwrap(); - assert_eq!(board_members.len(), 2); - assert_eq!(board_members.as_slice()[0], state.board_member_address); - assert_eq!(board_members.as_slice()[1], new_board_member_address); - }, + state.world.sc_query( + ScQueryStep::new() + .call(state.multisig_contract.get_all_board_members()) + .expect_value(MultiValueVec::
::from(vec![ + state.board_member_address.clone(), + new_board_member_address.clone(), + ])), ); } @@ -313,15 +315,13 @@ fn test_add_proposer() { state.perform(action_id); state.expect_user_role(&new_proposer_address, UserRole::Proposer); - - state.world.sc_query_use_result( - ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), - |r| { - let proposers: MultiValueVec
= r.result.unwrap(); - assert_eq!(proposers.len(), 2); - assert_eq!(proposers.as_slice()[0], state.proposer_address); - assert_eq!(proposers.as_slice()[1], new_proposer_address); - }, + state.world.sc_query( + ScQueryStep::new() + .call(state.multisig_contract.get_all_proposers()) + .expect_value(MultiValueVec::
::from(vec![ + state.proposer_address.clone(), + new_proposer_address.clone(), + ])), ); } @@ -337,13 +337,10 @@ fn test_remove_proposer() { state.perform(action_id); state.expect_user_role(&state.proposer_address.clone(), UserRole::None); - - state.world.sc_query_use_result( - ScQueryStep::new().call(state.multisig_contract.get_all_proposers()), - |r| { - let proposers: MultiValueVec
= r.result.unwrap(); - assert_eq!(proposers.len(), 0); - }, + state.world.sc_query( + ScQueryStep::new() + .call(state.multisig_contract.get_all_proposers()) + .expect_value(MultiValueVec::
::new()), ); } @@ -447,7 +444,6 @@ fn test_transfer_execute_to_user() { // failed attempt let new_user_address = AddressValue::from(NEW_USER_ADDRESS_EXPR).to_address(); - let opt_function: OptionalValue = OptionalValue::None; state.world.sc_call( ScCallStep::new() @@ -455,7 +451,7 @@ fn test_transfer_execute_to_user() { .call(state.multisig_contract.propose_transfer_execute( new_user_address.clone(), 0u64, - opt_function.clone(), + OptionalValue::::None, MultiValueVec::>::new(), )) .expect(TxExpect::err( @@ -465,12 +461,17 @@ fn test_transfer_execute_to_user() { ); // propose - let action_id = state.propose_transfer_execute( - new_user_address.clone(), - AMOUNT.parse().unwrap(), - opt_function, - MultiValueVec::>::new(), - ); + let action_id = + state + .world + .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + state.multisig_contract.propose_transfer_execute( + new_user_address.clone(), + AMOUNT.parse::().unwrap(), + OptionalValue::::None, + MultiValueVec::>::new(), + ), + )); state.sign(action_id); state.perform(action_id); @@ -485,13 +486,9 @@ fn test_transfer_execute_sc_all() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - let action_id = state.propose_transfer_execute( - adder_contract_address.clone(), - 0u64, - OptionalValue::Some("add".to_string()), - MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - ); + let adder_call = state.adder_contract.add(5u64); + + let action_id = state.propose_transfer_execute(state.adder_address.clone(), 0u64, adder_call); state.sign(action_id); state.perform(action_id); @@ -507,13 +504,9 @@ fn test_async_call_to_sc() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let adder_contract_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); - let action_id = state.propose_async_call( - adder_contract_address.clone(), - 0u64, - OptionalValue::Some("add".to_string()), - MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - ); + let adder_call = state.adder_contract.add(5u64); + + let action_id = state.propose_async_call(state.adder_address.clone(), 0u64, adder_call); state.sign(action_id); state.perform(action_id); @@ -537,11 +530,10 @@ fn test_deploy_and_upgrade_from_source() { )); let new_adder_address = AddressValue::from(NEW_ADDER_ADDRESS_EXPR).to_address(); - let adder_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); let action_id = state.propose_sc_deploy_from_source( 0u64, - adder_address.clone(), + state.adder_address.clone(), CodeMetadata::all(), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), ); @@ -553,12 +545,9 @@ fn test_deploy_and_upgrade_from_source() { .expect_value(OptionalValue::Some(new_adder_address.clone())), ); - let action_id = state.propose_transfer_execute( - new_adder_address.clone(), - 0u64, - OptionalValue::Some("add".to_string()), - MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), - ); + let adder_call = state.adder_contract.add(5u64); + + let action_id = state.propose_transfer_execute(new_adder_address.clone(), 0u64, adder_call); state.sign(action_id); state.perform(action_id); @@ -570,11 +559,12 @@ fn test_deploy_and_upgrade_from_source() { .expect_value(SingleValue::from(BigUint::from(10u64))), ); - let factorial_code = state.world.code_expression(FACTORIAL_PATH_EXPR); - const FACTORIAL_ADDRESS_EXPR: &str = "sc:factorial"; const FACTORIAL_PATH_EXPR: &str = "file:test-contracts/factorial.wasm"; + let factorial_code = state.world.code_expression(FACTORIAL_PATH_EXPR); + let factorial_address = AddressValue::from(FACTORIAL_ADDRESS_EXPR).to_address(); + state .world .register_contract(FACTORIAL_PATH_EXPR, factorial::ContractBuilder); @@ -583,10 +573,8 @@ fn test_deploy_and_upgrade_from_source() { Account::new().nonce(1).code(factorial_code.clone()), )); - let factorial_address = AddressValue::from(FACTORIAL_ADDRESS_EXPR).to_address(); - let action_id = state.propose_sc_upgrade_from_source( - adder_address.clone(), + state.adder_address.clone(), 0u64, factorial_address.clone(), CodeMetadata::all(), From d81465bf12050be50bb82921eb8d132d248e91f9 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 31 Aug 2023 11:15:39 +0300 Subject: [PATCH 37/54] wrappers public constructor --- framework/base/src/contract_base/contract_base_trait.rs | 2 +- .../base/src/contract_base/{wrappers/mod.rs => wrappers.rs} | 0 .../base/src/contract_base/wrappers/callback_args_wrapper.rs | 2 +- framework/base/src/contract_base/wrappers/crypto_wrapper.rs | 2 +- framework/base/src/contract_base/wrappers/error_helper.rs | 2 +- framework/base/src/contract_base/wrappers/send_raw_wrapper.rs | 2 +- framework/base/src/contract_base/wrappers/send_wrapper.rs | 2 +- 7 files changed, 6 insertions(+), 6 deletions(-) rename framework/base/src/contract_base/{wrappers/mod.rs => wrappers.rs} (100%) diff --git a/framework/base/src/contract_base/contract_base_trait.rs b/framework/base/src/contract_base/contract_base_trait.rs index bafe95e02f..cec45dfa0f 100644 --- a/framework/base/src/contract_base/contract_base_trait.rs +++ b/framework/base/src/contract_base/contract_base_trait.rs @@ -55,7 +55,7 @@ pub trait ContractBase: Sized { #[inline] fn error(&self) -> ErrorHelper { - ErrorHelper::new_instance() + ErrorHelper::new() } #[inline] diff --git a/framework/base/src/contract_base/wrappers/mod.rs b/framework/base/src/contract_base/wrappers.rs similarity index 100% rename from framework/base/src/contract_base/wrappers/mod.rs rename to framework/base/src/contract_base/wrappers.rs diff --git a/framework/base/src/contract_base/wrappers/callback_args_wrapper.rs b/framework/base/src/contract_base/wrappers/callback_args_wrapper.rs index bbbca88d43..aa26e29075 100644 --- a/framework/base/src/contract_base/wrappers/callback_args_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/callback_args_wrapper.rs @@ -16,7 +16,7 @@ pub struct CallbackArgApiWrapper { } impl CallbackArgApiWrapper { - pub(super) fn new() -> Self { + pub fn new() -> Self { CallbackArgApiWrapper { _phantom: PhantomData, } diff --git a/framework/base/src/contract_base/wrappers/crypto_wrapper.rs b/framework/base/src/contract_base/wrappers/crypto_wrapper.rs index f34c52dc02..c314899eaa 100644 --- a/framework/base/src/contract_base/wrappers/crypto_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/crypto_wrapper.rs @@ -20,7 +20,7 @@ impl CryptoWrapper where A: CryptoApi, { - pub(crate) fn new() -> Self { + pub fn new() -> Self { CryptoWrapper { _phantom: PhantomData, } diff --git a/framework/base/src/contract_base/wrappers/error_helper.rs b/framework/base/src/contract_base/wrappers/error_helper.rs index 92612d7794..afd5c6f4ee 100644 --- a/framework/base/src/contract_base/wrappers/error_helper.rs +++ b/framework/base/src/contract_base/wrappers/error_helper.rs @@ -13,7 +13,7 @@ pub struct ErrorHelper { } impl ErrorHelper { - pub(crate) fn new_instance() -> Self { + pub fn new() -> Self { ErrorHelper { _phantom: PhantomData, } diff --git a/framework/base/src/contract_base/wrappers/send_raw_wrapper.rs b/framework/base/src/contract_base/wrappers/send_raw_wrapper.rs index 6b08175585..5635c0b44a 100644 --- a/framework/base/src/contract_base/wrappers/send_raw_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_raw_wrapper.rs @@ -23,7 +23,7 @@ impl SendRawWrapper where A: CallTypeApi, { - pub(crate) fn new() -> Self { + pub fn new() -> Self { SendRawWrapper { _phantom: PhantomData, } diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 24b09dacb7..c78fb9937f 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -39,7 +39,7 @@ impl SendWrapper where A: CallTypeApi + StorageReadApi + BlockchainApi, { - pub(crate) fn new() -> Self { + pub fn new() -> Self { SendWrapper { _phantom: PhantomData, } From 0204c32f0d4f689f4a300ed02489fbc6e1801877 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 31 Aug 2023 12:20:14 +0300 Subject: [PATCH 38/54] clippy fix --- .../base/src/contract_base/wrappers/callback_args_wrapper.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/base/src/contract_base/wrappers/callback_args_wrapper.rs b/framework/base/src/contract_base/wrappers/callback_args_wrapper.rs index aa26e29075..2baef24c70 100644 --- a/framework/base/src/contract_base/wrappers/callback_args_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/callback_args_wrapper.rs @@ -10,7 +10,7 @@ use crate::{ /// Replaces the EndpointArgumentApi inside a promises callback, /// and causes it to read arguments from the callback data instead of the regular tx input. -#[derive(Clone)] +#[derive(Clone, Default)] pub struct CallbackArgApiWrapper { _phantom: PhantomData, } From a381cdeea9e374bf608d1a51b2a5820886e173d8 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 7 Sep 2023 20:56:00 +0300 Subject: [PATCH 39/54] add blackbox tests full --- .../tests/price_aggregator_blackbox_test.rs | 388 ++++++++++++++++++ 1 file changed, 388 insertions(+) create mode 100644 contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs new file mode 100644 index 0000000000..bc1078bb06 --- /dev/null +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -0,0 +1,388 @@ +use multiversx_price_aggregator_sc::{ + price_aggregator_data::{OracleStatus, TimestampedPrice, TokenPair}, + staking::ProxyTrait as _, + ContractObj, PriceAggregator, ProxyTrait as _, MAX_ROUND_DURATION_SECONDS, +}; +use multiversx_sc::{ + codec::multi_types::MultiValueVec, + types::{Address, EgldOrEsdtTokenIdentifier}, +}; +use multiversx_sc_modules::pause::ProxyTrait; +use multiversx_sc_scenario::{ + api::StaticApi, + managed_address, managed_biguint, managed_buffer, + scenario_model::{Account, AddressValue, ScCallStep, ScDeployStep, SetStateStep, TxExpect}, + ContractInfo, DebugApi, ScenarioWorld, WhiteboxContract, +}; + +const DECIMALS: u8 = 0; +const EGLD_TICKER: &[u8] = b"EGLD"; +const NR_ORACLES: usize = 4; +const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const PRICE_AGGREGATOR_ADDRESS_EXPR: &str = "sc:price-aggregator"; +const PRICE_AGGREGATOR_PATH_EXPR: &str = "file:output/multiversx-price-aggregator-sc.wasm"; +const SLASH_AMOUNT: u64 = 10; +const SLASH_QUORUM: usize = 2; +const STAKE_AMOUNT: u64 = 20; +const SUBMISSION_COUNT: usize = 3; +const USD_TICKER: &[u8] = b"USDC"; + +type PriceAggregatorContract = ContractInfo>; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + + blockchain.set_current_dir_from_workspace("contracts/core/price-aggregator"); + blockchain.register_contract( + PRICE_AGGREGATOR_PATH_EXPR, + multiversx_price_aggregator_sc::ContractBuilder, + ); + + blockchain +} + +struct PriceAggregatorTestState { + world: ScenarioWorld, + oracles: Vec, + price_aggregator_contract: PriceAggregatorContract, + price_aggregator_whitebox: WhiteboxContract>, +} + +impl PriceAggregatorTestState { + fn new() -> Self { + let mut world = world(); + + let mut set_state_step = SetStateStep::new() + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) + .block_timestamp(100); + + let mut oracles = Vec::new(); + for i in 1..=NR_ORACLES { + let address_expr = format!("address:oracle{}", i); + let address_value = AddressValue::from(address_expr.as_str()); + + set_state_step = set_state_step.put_account( + address_expr.as_str(), + Account::new().nonce(1).balance(STAKE_AMOUNT), + ); + + oracles.push(address_value); + } + world.set_state_step(set_state_step); + + let price_aggregator_contract = PriceAggregatorContract::new(PRICE_AGGREGATOR_ADDRESS_EXPR); + let price_aggregator_whitebox = WhiteboxContract::new( + PRICE_AGGREGATOR_ADDRESS_EXPR, + multiversx_price_aggregator_sc::contract_obj, + ); + + Self { + world, + oracles, + price_aggregator_contract, + price_aggregator_whitebox, + } + } + + fn deploy(&mut self) -> &mut Self { + let price_aggregator_code = self.world.code_expression(PRICE_AGGREGATOR_PATH_EXPR); + + let oracles = MultiValueVec::from( + self.oracles + .iter() + .map(|oracle| oracle.to_address()) + .collect::>(), + ); + + self.world.sc_deploy( + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(price_aggregator_code) + .call(self.price_aggregator_contract.init( + EgldOrEsdtTokenIdentifier::egld(), + STAKE_AMOUNT, + SLASH_AMOUNT, + SLASH_QUORUM, + SUBMISSION_COUNT, + oracles, + )), + ); + + for address in self.oracles.iter() { + self.world.sc_call( + ScCallStep::new() + .from(address) + .egld_value(STAKE_AMOUNT) + .call(self.price_aggregator_contract.stake()), + ); + } + + self + } + + fn set_pair_decimals(&mut self) { + self.world.sc_call( + ScCallStep::new().from(OWNER_ADDRESS_EXPR).call( + self.price_aggregator_contract + .set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS), + ), + ); + } + + fn unpause_endpoint(&mut self) { + self.world.sc_call( + ScCallStep::new() + .from(OWNER_ADDRESS_EXPR) + .call(self.price_aggregator_contract.unpause_endpoint()), + ); + } + + fn submit(&mut self, from: &AddressValue, submission_timestamp: u64, price: u64) { + self.world.sc_call(ScCallStep::new().from(from).call( + self.price_aggregator_contract.submit( + EGLD_TICKER, + USD_TICKER, + submission_timestamp, + price, + DECIMALS, + ), + )); + } + + fn submit_and_expect_err( + &mut self, + from: &AddressValue, + submission_timestamp: u64, + price: u64, + err_message: &str, + ) { + self.world.sc_call( + ScCallStep::new() + .from(from) + .call(self.price_aggregator_contract.submit( + EGLD_TICKER, + USD_TICKER, + submission_timestamp, + price, + DECIMALS, + )) + .expect(TxExpect::user_error("str:".to_string() + err_message)), + ); + } + + fn vote_slash_member(&mut self, from: &AddressValue, member_to_slash: Address) { + self.world.sc_call( + ScCallStep::new().from(from).call( + self.price_aggregator_contract + .vote_slash_member(member_to_slash), + ), + ); + } +} + +#[test] +fn test_price_aggregator_submit() { + let mut state = PriceAggregatorTestState::new(); + state.deploy(); + + // configure the number of decimals + state.set_pair_decimals(); + + // try submit while paused + state.submit_and_expect_err(&state.oracles[0].clone(), 99, 100, "Contract is paused"); + + // unpause + state.unpause_endpoint(); + + // submit first timestamp too old + state.submit_and_expect_err( + &state.oracles[0].clone(), + 10, + 100, + "First submission too old", + ); + + // submit ok + state.submit(&state.oracles[0].clone(), 95, 100); + + let current_timestamp = 100; + state + .world + .whitebox_query(&state.price_aggregator_whitebox, |sc| { + let token_pair = TokenPair { + from: managed_buffer!(EGLD_TICKER), + to: managed_buffer!(USD_TICKER), + }; + assert_eq!( + sc.first_submission_timestamp(&token_pair).get(), + current_timestamp + ); + assert_eq!( + sc.last_submission_timestamp(&token_pair).get(), + current_timestamp + ); + + let submissions = sc.submissions().get(&token_pair).unwrap(); + assert_eq!(submissions.len(), 1); + assert_eq!( + submissions + .get(&managed_address!(&state.oracles[0].to_address())) + .unwrap(), + managed_biguint!(100) + ); + + assert_eq!( + sc.oracle_status() + .get(&managed_address!(&state.oracles[0].to_address())) + .unwrap(), + OracleStatus { + total_submissions: 1, + accepted_submissions: 1 + } + ); + }); + + // first oracle submit again - submission not accepted + state.submit(&state.oracles[0].clone(), 95, 100); + + state + .world + .whitebox_query(&state.price_aggregator_whitebox, |sc| { + assert_eq!( + sc.oracle_status() + .get(&managed_address!(&state.oracles[0].to_address())) + .unwrap(), + OracleStatus { + total_submissions: 2, + accepted_submissions: 1 + } + ); + }); +} + +#[test] +fn test_price_aggregator_submit_round_ok() { + let mut state = PriceAggregatorTestState::new(); + state.deploy(); + + // configure the number of decimals + state.set_pair_decimals(); + + // unpause + state.unpause_endpoint(); + + // submit first + state.submit(&state.oracles[0].clone(), 95, 10_000); + + let current_timestamp = 110; + state + .world + .set_state_step(SetStateStep::new().block_timestamp(current_timestamp)); + + // submit second + state.submit(&state.oracles[1].clone(), 101, 11_000); + + // submit third + state.submit(&state.oracles[2].clone(), 105, 12_000); + + state + .world + .whitebox_query(&state.price_aggregator_whitebox, |sc| { + let result = sc + .latest_price_feed(managed_buffer!(EGLD_TICKER), managed_buffer!(USD_TICKER)) + .unwrap(); + + let (round_id, from, to, timestamp, price, decimals) = result.into_tuple(); + assert_eq!(round_id, 1); + assert_eq!(from, managed_buffer!(EGLD_TICKER)); + assert_eq!(to, managed_buffer!(USD_TICKER)); + assert_eq!(timestamp, current_timestamp); + assert_eq!(price, managed_biguint!(11_000)); + assert_eq!(decimals, DECIMALS); + + // submissions are deleted after round is created + let token_pair = TokenPair { from, to }; + let submissions = sc.submissions().get(&token_pair).unwrap(); + assert_eq!(submissions.len(), 0); + + let rounds = sc.rounds().get(&token_pair).unwrap(); + assert_eq!(rounds.len(), 1); + assert_eq!( + rounds.get(1), + TimestampedPrice { + timestamp, + price, + decimals + } + ); + }); +} + +#[test] +fn test_price_aggregator_discarded_round() { + let mut state = PriceAggregatorTestState::new(); + state.deploy(); + + // configure the number of decimals + state.set_pair_decimals(); + + // unpause + state.unpause_endpoint(); + + // submit first + state.submit(&state.oracles[0].clone(), 95, 10_000); + + let current_timestamp = 100 + MAX_ROUND_DURATION_SECONDS + 1; + state + .world + .set_state_step(SetStateStep::new().block_timestamp(current_timestamp)); + + // submit second - this will discard the previous submission + state.submit(&state.oracles[1].clone(), current_timestamp - 1, 11_000); + + state + .world + .whitebox_query(&state.price_aggregator_whitebox, |sc| { + let token_pair = TokenPair { + from: managed_buffer!(EGLD_TICKER), + to: managed_buffer!(USD_TICKER), + }; + let submissions = sc.submissions().get(&token_pair).unwrap(); + assert_eq!(submissions.len(), 1); + assert_eq!( + submissions + .get(&managed_address!(&state.oracles[1].to_address())) + .unwrap(), + managed_biguint!(11_000) + ); + }); +} + +#[test] +fn test_price_aggregator_slashing() { + let mut state = PriceAggregatorTestState::new(); + state.deploy(); + + // unpause + state.unpause_endpoint(); + + state.vote_slash_member(&state.oracles[0].clone(), state.oracles[1].to_address()); + state.vote_slash_member(&state.oracles[2].clone(), state.oracles[1].to_address()); + + state.world.sc_call( + ScCallStep::new().from(&state.oracles[0]).call( + state + .price_aggregator_contract + .slash_member(state.oracles[1].to_address()), + ), + ); + + // oracle 1 try submit after slashing + state.submit_and_expect_err( + &state.oracles[1].clone(), + 95, + 10_000, + "only oracles allowed", + ); +} From fde63c269e9f3c7d550881ffdc0eda2177e99393 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Thu, 7 Sep 2023 20:59:09 +0300 Subject: [PATCH 40/54] small refactor on multisig blackbox --- .../multisig/tests/multisig_blackbox_test.rs | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 1ff87d1d37..b4e8765e3f 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -31,7 +31,6 @@ const OWNER_ADDRESS_EXPR: &str = "address:owner"; const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; const QUORUM_SIZE: usize = 1; -const STATUS_ERR_CODE_EXPR: u64 = 4; type MultisigContract = ContractInfo>; type AdderContract = ContractInfo>; @@ -243,10 +242,7 @@ impl MultisigTestState { ScCallStep::new() .from(BOARD_MEMBER_ADDRESS_EXPR) .call(self.multisig_contract.perform_action_endpoint(action_id)) - .expect(TxExpect::err( - STATUS_ERR_CODE_EXPR, - "str:".to_string() + err_message, - )), + .expect(TxExpect::user_error("str:".to_string() + err_message)), ); } @@ -370,8 +366,7 @@ fn test_change_quorum() { ScCallStep::new() .from(BOARD_MEMBER_ADDRESS_EXPR) .call(state.multisig_contract.discard_action(action_id)) - .expect(TxExpect::err( - STATUS_ERR_CODE_EXPR, + .expect(TxExpect::user_error( "str:cannot discard action with valid signatures", )), ); @@ -394,10 +389,7 @@ fn test_change_quorum() { ScCallStep::new() .from(BOARD_MEMBER_ADDRESS_EXPR) .call(state.multisig_contract.sign(action_id)) - .expect(TxExpect::err( - STATUS_ERR_CODE_EXPR, - "str:action does not exist", - )), + .expect(TxExpect::user_error("str:action does not exist")), ); // add another board member @@ -454,10 +446,7 @@ fn test_transfer_execute_to_user() { OptionalValue::::None, MultiValueVec::>::new(), )) - .expect(TxExpect::err( - STATUS_ERR_CODE_EXPR, - "str:proposed action has no effect", - )), + .expect(TxExpect::user_error("str:proposed action has no effect")), ); // propose From ebc3e643ab5dd08e3761eb0231724505efceef76 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Fri, 8 Sep 2023 12:26:21 +0300 Subject: [PATCH 41/54] add blackbox tests full --- .../tests/transfer_role_blackbox_test.rs | 176 ++++++++++++++++++ .../tests/transfer_role_whitebox_test.rs | 6 +- 2 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs diff --git a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs new file mode 100644 index 0000000000..7cecb56518 --- /dev/null +++ b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs @@ -0,0 +1,176 @@ +#![allow(unused)] + +use multiversx_sc::{ + codec::multi_types::MultiValueVec, + types::{Address, ContractCallNoPayment}, +}; +use multiversx_sc_scenario::{ + api::StaticApi, + scenario_model::{ + Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, + SetStateStep, TxExpect, + }, + ContractInfo, ScenarioWorld, +}; +use transfer_role_features::ProxyTrait as _; + +const ACCEPT_FUNDS_FUNC_NAME: &[u8] = b"accept_funds"; +const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const REJECT_FUNDS_FUNC_NAME: &[u8] = b"reject_funds"; +const TRANSFER_ROLE_FEATURES_ADDRESS_EXPR: &str = "sc:transfer-role-features"; +const TRANSFER_ROLE_FEATURES_PATH_EXPR: &str = "file:output/transfer-role-features.wasm"; +const TRANSFER_TOKEN_ID: &[u8] = b"TRANSFER-123456"; +const TRANSFER_TOKEN_ID_EXPR: &str = "str:TRANSFER-123456"; +const USER_ADDRESS_EXPR: &str = "address:user"; +const VAULT_ADDRESS_EXPR: &str = "sc:vault"; +const VAULT_PATH_EXPR: &str = "file:../vault/output/vault.wasm"; + +type TransferRoleFeaturesContract = ContractInfo>; +type VaultContract = ContractInfo>; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace( + "contracts/feature-tests/composability/transfer-role-features", + ); + + blockchain.register_contract( + TRANSFER_ROLE_FEATURES_PATH_EXPR, + transfer_role_features::ContractBuilder, + ); + blockchain.register_contract(VAULT_PATH_EXPR, vault::ContractBuilder); + blockchain +} + +struct TransferRoleTestState { + world: ScenarioWorld, + owner_address: Address, + vault_address: Address, + transfer_role_features_contract: TransferRoleFeaturesContract, + vault_contract: VaultContract, +} + +impl TransferRoleTestState { + fn new() -> Self { + let mut world = world(); + let vault_code = world.code_expression(VAULT_PATH_EXPR); + + world.set_state_step( + SetStateStep::new() + .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .new_address(OWNER_ADDRESS_EXPR, 1, TRANSFER_ROLE_FEATURES_ADDRESS_EXPR) + .put_account( + VAULT_ADDRESS_EXPR, + Account::new().nonce(1).code(vault_code.clone()), + ) + .put_account( + USER_ADDRESS_EXPR, + Account::new() + .nonce(1) + .esdt_balance(TRANSFER_TOKEN_ID_EXPR, 1_000u64), + ), + ); + + let owner_address = AddressValue::from(OWNER_ADDRESS_EXPR).to_address(); + let vault_address = AddressValue::from(VAULT_ADDRESS_EXPR).to_address(); + let transfer_role_features_contract = + TransferRoleFeaturesContract::new(TRANSFER_ROLE_FEATURES_ADDRESS_EXPR); + let vault_contract = VaultContract::new(VAULT_ADDRESS_EXPR); + + Self { + world, + owner_address, + vault_address, + transfer_role_features_contract, + vault_contract, + } + } + + fn deploy(&mut self) -> &mut Self { + let transfer_role_features_code = + self.world.code_expression(TRANSFER_ROLE_FEATURES_PATH_EXPR); + + let whitelist = MultiValueVec::from(vec![ + AddressValue::from(OWNER_ADDRESS_EXPR).to_address(), + AddressValue::from(VAULT_ADDRESS_EXPR).to_address(), + ]); + + self.world.sc_deploy( + ScDeployStep::new() + .from(OWNER_ADDRESS_EXPR) + .code(transfer_role_features_code) + .call(self.transfer_role_features_contract.init(whitelist)), + ); + + self + } + + fn forward_payments(&mut self, dest: Address, endpoint_name: &[u8]) { + self.world.sc_call( + ScCallStep::new() + .from(USER_ADDRESS_EXPR) + .esdt_transfer(TRANSFER_TOKEN_ID, 0, 100u64) + .call(self.transfer_role_features_contract.forward_payments( + dest, + endpoint_name, + MultiValueVec::>::new(), + )), + ); + } + + fn check_user_and_vault_balance(&mut self) { + self.world + .check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, "800"), + )); + self.world + .check_state_step(CheckStateStep::new().put_account( + VAULT_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, "100"), + )); + } +} + +#[test] +fn test_transfer_role() { + let mut state = TransferRoleTestState::new(); + state.deploy(); + + // transfer to user - ok + state.forward_payments(state.owner_address.clone(), b""); + state + .world + .check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, "900"), + )); + state + .world + .check_state_step(CheckStateStep::new().put_account( + OWNER_ADDRESS_EXPR, + CheckAccount::new().esdt_balance(TRANSFER_TOKEN_ID_EXPR, "100"), + )); + + // transfer to user - err, not whitelisted + state.world.sc_call( + ScCallStep::new() + .from(USER_ADDRESS_EXPR) + .esdt_transfer(TRANSFER_TOKEN_ID, 0, 100u64) + .call(state.transfer_role_features_contract.forward_payments( + Address::zero(), + "", + MultiValueVec::>::new(), + )) + // change to TxExpect::user_error + .expect(TxExpect::err(4, "str:Destination address not whitelisted")), + ); + + // transfer to sc - ok + state.forward_payments(state.vault_address.clone(), ACCEPT_FUNDS_FUNC_NAME); + state.check_user_and_vault_balance(); + + // transfer to sc - reject + state.forward_payments(state.vault_address.clone(), REJECT_FUNDS_FUNC_NAME); + state.check_user_and_vault_balance(); +} diff --git a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs index d88b9a981e..7294fa76b4 100644 --- a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs +++ b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_whitebox_test.rs @@ -15,7 +15,7 @@ const OWNER_ADDRESS_EXPR: &str = "address:owner"; const USER_ADDRESS_EXPR: &str = "address:user"; const TRANSFER_ROLE_FEATURES_ADDRESS_EXPR: &str = "sc:transfer-role-features"; -const TRANSFER_ROLE_FEATURES_PATH_EXPR: &str = "file:output/transfer_role_features.wasm"; +const TRANSFER_ROLE_FEATURES_PATH_EXPR: &str = "file:output/transfer-role-features.wasm"; const TRANSFER_TOKEN_ID_EXPR: &str = "str:TRANSFER-123456"; const TRANSFER_TOKEN_ID: &[u8] = b"TRANSFER-123456"; @@ -25,7 +25,9 @@ const REJECT_FUNDS_FUNC_NAME: &[u8] = b"reject_funds"; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/composability/transfer-role-features"); + blockchain.set_current_dir_from_workspace( + "contracts/composability/feature-tests/transfer-role-features", + ); blockchain.register_contract( TRANSFER_ROLE_FEATURES_PATH_EXPR, From e6d95ebfb07d6d384cb3f044e5c01aa6a72223ef Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Fri, 8 Sep 2023 12:52:08 +0300 Subject: [PATCH 42/54] leftover small refactor --- .../tests/transfer_role_blackbox_test.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs index 7cecb56518..87a83274c2 100644 --- a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs +++ b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs @@ -162,8 +162,9 @@ fn test_transfer_role() { "", MultiValueVec::>::new(), )) - // change to TxExpect::user_error - .expect(TxExpect::err(4, "str:Destination address not whitelisted")), + .expect(TxExpect::user_error( + "str:Destination address not whitelisted", + )), ); // transfer to sc - ok From f1b2f2d57ad00a591b325078bdb885b2418cb69d Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Fri, 8 Sep 2023 12:55:00 +0300 Subject: [PATCH 43/54] remove allow unused, small clean --- .../tests/transfer_role_blackbox_test.rs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs index 87a83274c2..2497f65614 100644 --- a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs +++ b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs @@ -1,9 +1,4 @@ -#![allow(unused)] - -use multiversx_sc::{ - codec::multi_types::MultiValueVec, - types::{Address, ContractCallNoPayment}, -}; +use multiversx_sc::{codec::multi_types::MultiValueVec, types::Address}; use multiversx_sc_scenario::{ api::StaticApi, scenario_model::{ @@ -47,7 +42,6 @@ struct TransferRoleTestState { owner_address: Address, vault_address: Address, transfer_role_features_contract: TransferRoleFeaturesContract, - vault_contract: VaultContract, } impl TransferRoleTestState { @@ -75,14 +69,12 @@ impl TransferRoleTestState { let vault_address = AddressValue::from(VAULT_ADDRESS_EXPR).to_address(); let transfer_role_features_contract = TransferRoleFeaturesContract::new(TRANSFER_ROLE_FEATURES_ADDRESS_EXPR); - let vault_contract = VaultContract::new(VAULT_ADDRESS_EXPR); Self { world, owner_address, vault_address, transfer_role_features_contract, - vault_contract, } } From 204055ff1b08b7d04c367a6a6cf7e4dcaa0d9648 Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Fri, 8 Sep 2023 12:57:28 +0300 Subject: [PATCH 44/54] clippy fixes --- .../transfer-role-features/tests/transfer_role_blackbox_test.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs index 2497f65614..ce6c8ffb70 100644 --- a/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs +++ b/contracts/feature-tests/composability/transfer-role-features/tests/transfer_role_blackbox_test.rs @@ -21,7 +21,6 @@ const VAULT_ADDRESS_EXPR: &str = "sc:vault"; const VAULT_PATH_EXPR: &str = "file:../vault/output/vault.wasm"; type TransferRoleFeaturesContract = ContractInfo>; -type VaultContract = ContractInfo>; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); From dbdfe94c0241cccff3445b462b035a5091070fd2 Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Fri, 8 Sep 2023 13:39:40 +0300 Subject: [PATCH 45/54] send wrapper non zero endpoints --- .../contract_base/wrappers/send_wrapper.rs | 280 ++++++++++++++++++ 1 file changed, 280 insertions(+) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index c78fb9937f..27e7200598 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -92,6 +92,17 @@ where self.direct_with_gas_limit(to, token, nonce, amount, 0, Empty, &[]); } + #[inline] + pub fn direct_non_zero( + &self, + to: &ManagedAddress, + token: &EgldOrEsdtTokenIdentifier, + nonce: u64, + amount: &BigUint, + ) { + self.direct_non_zero_with_gas_limit(to, token, nonce, amount, 0, Empty, &[]); + } + #[allow(clippy::too_many_arguments)] pub fn direct_esdt_with_gas_limit( &self, @@ -127,6 +138,43 @@ where } } + #[allow(clippy::too_many_arguments)] + pub fn direct_non_zero_esdt_with_gas_limit( + &self, + to: &ManagedAddress, + token_identifier: &TokenIdentifier, + nonce: u64, + amount: &BigUint, + gas: u64, + endpoint_name: D, + arguments: &[ManagedBuffer], + ) where + D: Into>, + { + if amount == &0 { + if nonce == 0 { + let _ = self.send_raw_wrapper().transfer_esdt_execute( + to, + token_identifier, + amount, + gas, + &endpoint_name.into(), + &arguments.into(), + ); + } else { + let _ = self.send_raw_wrapper().transfer_esdt_nft_execute( + to, + token_identifier, + nonce, + amount, + gas, + &endpoint_name.into(), + &arguments.into(), + ); + } + } + } + #[inline] #[allow(clippy::too_many_arguments)] pub fn direct_esdt( @@ -190,6 +238,42 @@ where } } + #[allow(clippy::too_many_arguments)] + pub fn direct_non_zero_with_gas_limit( + &self, + to: &ManagedAddress, + token: &EgldOrEsdtTokenIdentifier, + nonce: u64, + amount: &BigUint, + gas: u64, + endpoint_name: D, + arguments: &[ManagedBuffer], + ) where + D: Into>, + { + if amount == &0 { + if let Some(esdt_token_identifier) = token.as_esdt_option() { + self.direct_esdt_with_gas_limit( + to, + &esdt_token_identifier, + nonce, + amount, + gas, + endpoint_name, + arguments, + ); + } else { + let _ = self.send_raw_wrapper().direct_egld_execute( + to, + amount, + gas, + &endpoint_name.into(), + &arguments.into(), + ); + } + } + } + pub fn direct_multi( &self, to: &ManagedAddress, @@ -292,6 +376,35 @@ where ); } + pub fn esdt_non_zero_local_mint( + &self, + token: &TokenIdentifier, + nonce: u64, + amount: &BigUint, + ) { + if amount == &0 { + let mut arg_buffer = ManagedArgBuffer::new(); + let func_name: &str; + + arg_buffer.push_arg(token); + + if nonce == 0 { + func_name = ESDT_LOCAL_MINT_FUNC_NAME; + } else { + func_name = ESDT_NFT_ADD_QUANTITY_FUNC_NAME; + arg_buffer.push_arg(nonce); + } + + arg_buffer.push_arg(amount); + + let _ = self.call_local_esdt_built_in_function( + A::blockchain_api_impl().get_gas_left(), + &ManagedBuffer::from(func_name), + &arg_buffer, + ); + } + } + /// Allows synchronous burning of ESDT/SFT/NFT (depending on nonce). Execution is resumed afterwards. /// Note that the SC must have the ESDTLocalBurn or ESDTNftBurn roles set, /// or this will fail with "action is not allowed" @@ -315,6 +428,33 @@ where &arg_buffer, ); } + pub fn esdt_non_zero_local_burn( + &self, + token: &TokenIdentifier, + nonce: u64, + amount: &BigUint, + ) { + if amount == &0 { + let mut arg_buffer = ManagedArgBuffer::new(); + let func_name: &str; + + arg_buffer.push_arg(token); + if nonce == 0 { + func_name = ESDT_LOCAL_BURN_FUNC_NAME; + } else { + func_name = ESDT_NFT_BURN_FUNC_NAME; + arg_buffer.push_arg(nonce); + } + + arg_buffer.push_arg(amount); + + let _ = self.call_local_esdt_built_in_function( + A::blockchain_api_impl().get_gas_left(), + &ManagedBuffer::from(func_name), + &arg_buffer, + ); + } + } /// Allows burning of multiple ESDT tokens at once. /// @@ -328,6 +468,15 @@ where ); } } + pub fn esdt_non_zero_local_burn_multi(&self, payments: &ManagedVec>) { + for payment in payments { + self.esdt_non_zero_local_burn( + &payment.token_identifier, + payment.token_nonce, + &payment.amount, + ); + } + } /// Creates a new NFT token of a certain type (determined by `token_identifier`). /// `attributes` can be any serializable custom struct. @@ -377,6 +526,50 @@ where } } + #[allow(clippy::too_many_arguments)] + pub fn esdt_non_zero_nft_create( + &self, + token: &TokenIdentifier, + amount: &BigUint, + name: &ManagedBuffer, + royalties: &BigUint, + hash: &ManagedBuffer, + attributes: &T, + uris: &ManagedVec>, + ) -> u64 { + if amount == &0 { + let mut arg_buffer = ManagedArgBuffer::new(); + arg_buffer.push_arg(token); + arg_buffer.push_arg(amount); + arg_buffer.push_arg(name); + arg_buffer.push_arg(royalties); + arg_buffer.push_arg(hash); + arg_buffer.push_arg(attributes); + + if uris.is_empty() { + // at least one URI is required, so we push an empty one + arg_buffer.push_arg(codec::Empty); + } else { + // The API function has the last argument as variadic, + // so we top-encode each and send as separate argument + for uri in uris { + arg_buffer.push_arg(uri); + } + } + + let output = self.call_local_esdt_built_in_function( + A::blockchain_api_impl().get_gas_left(), + &ManagedBuffer::from(ESDT_NFT_CREATE_FUNC_NAME), + &arg_buffer, + ); + + if let Some(first_result_bytes) = output.try_get(0) { + return first_result_bytes.parse_as_u64().unwrap_or_default(); + } + } + 0 + } + #[inline] pub fn esdt_nft_create_compact( &self, @@ -409,6 +602,47 @@ where ) } + #[inline] + pub fn esdt_non_zero_nft_create_compact( + &self, + token: &TokenIdentifier, + amount: &BigUint, + attributes: &T, + ) -> u64 { + self.esdt_non_zero_nft_create_compact_named( + token, + amount, + &ManagedBuffer::new(), + attributes, + ) + } + + pub fn esdt_non_zero_nft_create_compact_named( + &self, + token: &TokenIdentifier, + amount: &BigUint, + name: &ManagedBuffer, + attributes: &T, + ) -> u64 { + if amount == &0 { + let big_zero = BigUint::zero(); + let empty_buffer = ManagedBuffer::new(); + let empty_vec = ManagedVec::from_handle(empty_buffer.get_handle()); + + self.esdt_nft_create( + token, + amount, + name, + &big_zero, + &empty_buffer, + attributes, + &empty_vec, + ) + } else { + 0 + } + } + /// Sends the NFTs to the buyer address and calculates and sends the required royalties to the NFT creator. /// Returns the payment amount left after sending royalties. #[allow(clippy::too_many_arguments)] @@ -453,6 +687,52 @@ where } } + #[allow(clippy::too_many_arguments)] + pub fn sell_nft_non_zero( + &self, + nft_id: &TokenIdentifier, + nft_nonce: u64, + nft_amount: &BigUint, + buyer: &ManagedAddress, + payment_token: &EgldOrEsdtTokenIdentifier, + payment_nonce: u64, + payment_amount: &BigUint, + ) -> BigUint { + if nft_amount == &0 || payment_amount == &0 { + let nft_token_data = BlockchainWrapper::::new().get_esdt_token_data( + &BlockchainWrapper::::new().get_sc_address(), + nft_id, + nft_nonce, + ); + let royalties_amount = + payment_amount.clone() * nft_token_data.royalties / PERCENTAGE_TOTAL; + + let _ = self.send_raw_wrapper().transfer_esdt_nft_execute( + buyer, + nft_id, + nft_nonce, + nft_amount, + 0, + &ManagedBuffer::new(), + &ManagedArgBuffer::new(), + ); + + if royalties_amount > 0u32 { + self.direct( + &nft_token_data.creator, + payment_token, + payment_nonce, + &royalties_amount, + ); + + return payment_amount.clone() - royalties_amount; + } else { + return payment_amount.clone(); + } + } + payment_amount.clone() + } + pub fn nft_add_uri( &self, token_id: &TokenIdentifier, From c2e70a7db06a32dc139905e384231493138e6450 Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Fri, 8 Sep 2023 13:50:22 +0300 Subject: [PATCH 46/54] deduplicate code --- .../contract_base/wrappers/send_wrapper.rs | 176 +++--------------- 1 file changed, 29 insertions(+), 147 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 27e7200598..37907a80d9 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -152,27 +152,17 @@ where D: Into>, { if amount == &0 { - if nonce == 0 { - let _ = self.send_raw_wrapper().transfer_esdt_execute( - to, - token_identifier, - amount, - gas, - &endpoint_name.into(), - &arguments.into(), - ); - } else { - let _ = self.send_raw_wrapper().transfer_esdt_nft_execute( - to, - token_identifier, - nonce, - amount, - gas, - &endpoint_name.into(), - &arguments.into(), - ); - } + return; } + self.direct_esdt_with_gas_limit( + to, + token_identifier, + nonce, + amount, + gas, + endpoint_name, + arguments, + ); } #[inline] @@ -252,26 +242,9 @@ where D: Into>, { if amount == &0 { - if let Some(esdt_token_identifier) = token.as_esdt_option() { - self.direct_esdt_with_gas_limit( - to, - &esdt_token_identifier, - nonce, - amount, - gas, - endpoint_name, - arguments, - ); - } else { - let _ = self.send_raw_wrapper().direct_egld_execute( - to, - amount, - gas, - &endpoint_name.into(), - &arguments.into(), - ); - } + return; } + self.direct_with_gas_limit(to, token, nonce, amount, gas, endpoint_name, arguments); } pub fn direct_multi( @@ -383,26 +356,9 @@ where amount: &BigUint, ) { if amount == &0 { - let mut arg_buffer = ManagedArgBuffer::new(); - let func_name: &str; - - arg_buffer.push_arg(token); - - if nonce == 0 { - func_name = ESDT_LOCAL_MINT_FUNC_NAME; - } else { - func_name = ESDT_NFT_ADD_QUANTITY_FUNC_NAME; - arg_buffer.push_arg(nonce); - } - - arg_buffer.push_arg(amount); - - let _ = self.call_local_esdt_built_in_function( - A::blockchain_api_impl().get_gas_left(), - &ManagedBuffer::from(func_name), - &arg_buffer, - ); + return; } + self.esdt_local_mint(token, nonce, amount); } /// Allows synchronous burning of ESDT/SFT/NFT (depending on nonce). Execution is resumed afterwards. @@ -435,25 +391,9 @@ where amount: &BigUint, ) { if amount == &0 { - let mut arg_buffer = ManagedArgBuffer::new(); - let func_name: &str; - - arg_buffer.push_arg(token); - if nonce == 0 { - func_name = ESDT_LOCAL_BURN_FUNC_NAME; - } else { - func_name = ESDT_NFT_BURN_FUNC_NAME; - arg_buffer.push_arg(nonce); - } - - arg_buffer.push_arg(amount); - - let _ = self.call_local_esdt_built_in_function( - A::blockchain_api_impl().get_gas_left(), - &ManagedBuffer::from(func_name), - &arg_buffer, - ); + return; } + self.esdt_local_burn(token, nonce, amount); } /// Allows burning of multiple ESDT tokens at once. @@ -538,36 +478,10 @@ where uris: &ManagedVec>, ) -> u64 { if amount == &0 { - let mut arg_buffer = ManagedArgBuffer::new(); - arg_buffer.push_arg(token); - arg_buffer.push_arg(amount); - arg_buffer.push_arg(name); - arg_buffer.push_arg(royalties); - arg_buffer.push_arg(hash); - arg_buffer.push_arg(attributes); - - if uris.is_empty() { - // at least one URI is required, so we push an empty one - arg_buffer.push_arg(codec::Empty); - } else { - // The API function has the last argument as variadic, - // so we top-encode each and send as separate argument - for uri in uris { - arg_buffer.push_arg(uri); - } - } - - let output = self.call_local_esdt_built_in_function( - A::blockchain_api_impl().get_gas_left(), - &ManagedBuffer::from(ESDT_NFT_CREATE_FUNC_NAME), - &arg_buffer, - ); - - if let Some(first_result_bytes) = output.try_get(0) { - return first_result_bytes.parse_as_u64().unwrap_or_default(); - } + 0 + } else { + self.esdt_nft_create(token, amount, name, royalties, hash, attributes, uris) } - 0 } #[inline] @@ -625,21 +539,9 @@ where attributes: &T, ) -> u64 { if amount == &0 { - let big_zero = BigUint::zero(); - let empty_buffer = ManagedBuffer::new(); - let empty_vec = ManagedVec::from_handle(empty_buffer.get_handle()); - - self.esdt_nft_create( - token, - amount, - name, - &big_zero, - &empty_buffer, - attributes, - &empty_vec, - ) - } else { 0 + } else { + self.esdt_nft_create_compact_named(token, amount, name, attributes) } } @@ -699,38 +601,18 @@ where payment_amount: &BigUint, ) -> BigUint { if nft_amount == &0 || payment_amount == &0 { - let nft_token_data = BlockchainWrapper::::new().get_esdt_token_data( - &BlockchainWrapper::::new().get_sc_address(), - nft_id, - nft_nonce, - ); - let royalties_amount = - payment_amount.clone() * nft_token_data.royalties / PERCENTAGE_TOTAL; - - let _ = self.send_raw_wrapper().transfer_esdt_nft_execute( - buyer, + payment_amount.clone() + } else { + self.sell_nft( nft_id, nft_nonce, nft_amount, - 0, - &ManagedBuffer::new(), - &ManagedArgBuffer::new(), - ); - - if royalties_amount > 0u32 { - self.direct( - &nft_token_data.creator, - payment_token, - payment_nonce, - &royalties_amount, - ); - - return payment_amount.clone() - royalties_amount; - } else { - return payment_amount.clone(); - } + buyer, + payment_token, + payment_nonce, + payment_amount, + ) } - payment_amount.clone() } pub fn nft_add_uri( From 7acd6ad6a61bf683fc7ef00c1d59422c11ae7365 Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Fri, 8 Sep 2023 13:56:44 +0300 Subject: [PATCH 47/54] transfer esdt non zero via async call --- .../src/contract_base/wrappers/send_wrapper.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 37907a80d9..be83fe9463 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -279,6 +279,22 @@ where .call_and_exit_ignore_callback() } + pub fn transfer_esdt_non_zero_via_async_call( + &self, + to: ManagedAddress, + token: TokenIdentifier, + nonce: u64, + amount: BigUint, + ) -> ! { + if amount == 0 { + unreachable!() + } + ContractCallNoPayment::::new(to, ManagedBuffer::new()) + .with_esdt_transfer((token, nonce, amount)) + .async_call() + .call_and_exit_ignore_callback() + } + pub fn transfer_multiple_esdt_via_async_call( &self, to: ManagedAddress, From e6355ae37a8125b5c1e7bdae6ca6ac6a35e39549 Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Fri, 8 Sep 2023 14:03:40 +0300 Subject: [PATCH 48/54] fix logic of transfer_non_zero+esdt_via_async_call --- framework/base/src/contract_base/wrappers/send_wrapper.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index be83fe9463..d8ca32cf1d 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -287,7 +287,9 @@ where amount: BigUint, ) -> ! { if amount == 0 { - unreachable!() + ContractCallNoPayment::::new(to, ManagedBuffer::new()) + .async_call() + .call_and_exit_ignore_callback() } ContractCallNoPayment::::new(to, ManagedBuffer::new()) .with_esdt_transfer((token, nonce, amount)) From b9092327ce7e791af92dcda8b43152876366a463 Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Fri, 8 Sep 2023 14:12:23 +0300 Subject: [PATCH 49/54] add comments for docs --- .../contract_base/wrappers/send_wrapper.rs | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index d8ca32cf1d..052b02972b 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -71,6 +71,9 @@ where self.send_raw_wrapper().direct_egld(to, amount, Empty) } + /// Sends EGLD to a given address, directly. + /// Used especially for sending EGLD to regular accounts. + /// If amount is 0 returns without error pub fn direct_non_zero_egld(&self, to: &ManagedAddress, amount: &BigUint) { if amount == &0 { return; @@ -92,6 +95,9 @@ where self.direct_with_gas_limit(to, token, nonce, amount, 0, Empty, &[]); } + /// Sends either EGLD, ESDT or NFT to the target address, + /// depending on the token identifier and nonce + /// If amount is 0 returns without error #[inline] pub fn direct_non_zero( &self, @@ -138,6 +144,7 @@ where } } + /// If amount is 0 returns without error #[allow(clippy::too_many_arguments)] pub fn direct_non_zero_esdt_with_gas_limit( &self, @@ -177,6 +184,7 @@ where self.direct_esdt_with_gas_limit(to, token_identifier, nonce, amount, 0, Empty, &[]); } + /// If amount is 0 returns without error pub fn direct_non_zero_esdt_payment( &self, to: &ManagedAddress, @@ -228,6 +236,7 @@ where } } + /// If amount is 0 returns without error #[allow(clippy::too_many_arguments)] pub fn direct_non_zero_with_gas_limit( &self, @@ -279,6 +288,12 @@ where .call_and_exit_ignore_callback() } + /// Performs a simple ESDT/NFT transfer, but via async call. + /// As with any async call, this immediately terminates the execution of the current call. + /// So only use as the last call in your endpoint. + /// If you want to perform multiple transfers, use `self.send().transfer_multiple_esdt_via_async_call()` instead. + /// Note that EGLD can NOT be transfered with this function. + /// If amount is 0 continues with the async call without making any transfer pub fn transfer_esdt_non_zero_via_async_call( &self, to: ManagedAddress, @@ -367,6 +382,12 @@ where ); } + /// Allows synchronous minting of ESDT/SFT (depending on nonce). Execution is resumed afterwards. + /// Note that the SC must have the ESDTLocalMint or ESDTNftAddQuantity roles set, + /// or this will fail with "action is not allowed" + /// For SFTs, you must use `self.send().esdt_nft_create()` before adding additional quantity. + /// This function cannot be used for NFTs. + /// If amount is 0 returns without error pub fn esdt_non_zero_local_mint( &self, token: &TokenIdentifier, @@ -402,6 +423,11 @@ where &arg_buffer, ); } + + /// Allows synchronous burning of ESDT/SFT/NFT (depending on nonce). Execution is resumed afterwards. + /// Note that the SC must have the ESDTLocalBurn or ESDTNftBurn roles set, + /// or this will fail with "action is not allowed" + /// If amount is 0 returns without error pub fn esdt_non_zero_local_burn( &self, token: &TokenIdentifier, @@ -426,6 +452,11 @@ where ); } } + + /// Allows burning of multiple ESDT tokens at once. + /// + /// Will execute a synchronous call to the appropriate burn builtin function for each. + /// If any of the token amounts is 0 skips that token without throwing error pub fn esdt_non_zero_local_burn_multi(&self, payments: &ManagedVec>) { for payment in payments { self.esdt_non_zero_local_burn( @@ -484,6 +515,12 @@ where } } + /// Creates a new NFT token of a certain type (determined by `token_identifier`). + /// `attributes` can be any serializable custom struct. + /// This is a built-in function, so the smart contract execution is resumed after. + /// Must have ESDTNftCreate role set, or this will fail with "action is not allowed". + /// Returns the nonce of the newly created NFT. + /// If amount is 0 returns without error #[allow(clippy::too_many_arguments)] pub fn esdt_non_zero_nft_create( &self, @@ -534,6 +571,7 @@ where ) } + /// If amount is 0 returns without error #[inline] pub fn esdt_non_zero_nft_create_compact( &self, @@ -549,6 +587,7 @@ where ) } + /// If amount is 0 returns without error pub fn esdt_non_zero_nft_create_compact_named( &self, token: &TokenIdentifier, @@ -607,6 +646,9 @@ where } } + /// Sends the NFTs to the buyer address and calculates and sends the required royalties to the NFT creator. + /// Returns the payment amount left after sending royalties. + /// If the nft_amount or the payment_amount is 0 returns without error #[allow(clippy::too_many_arguments)] pub fn sell_nft_non_zero( &self, From ad2708566c163ce60a8fc12bc465a170891f40cf Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Fri, 8 Sep 2023 14:28:50 +0300 Subject: [PATCH 50/54] fix transfer_esdt_non_zero_via_async_call return --- framework/base/src/contract_base/wrappers/send_wrapper.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 052b02972b..350d00a9f5 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -300,11 +300,9 @@ where token: TokenIdentifier, nonce: u64, amount: BigUint, - ) -> ! { + ) { if amount == 0 { - ContractCallNoPayment::::new(to, ManagedBuffer::new()) - .async_call() - .call_and_exit_ignore_callback() + return; } ContractCallNoPayment::::new(to, ManagedBuffer::new()) .with_esdt_transfer((token, nonce, amount)) From 84ffda62cf15ff08ef131c7f624a113af7032325 Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Fri, 8 Sep 2023 14:31:55 +0300 Subject: [PATCH 51/54] fix docs comment --- framework/base/src/contract_base/wrappers/send_wrapper.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 350d00a9f5..790fbd1631 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -293,7 +293,7 @@ where /// So only use as the last call in your endpoint. /// If you want to perform multiple transfers, use `self.send().transfer_multiple_esdt_via_async_call()` instead. /// Note that EGLD can NOT be transfered with this function. - /// If amount is 0 continues with the async call without making any transfer + /// If amount is 0 returns without error pub fn transfer_esdt_non_zero_via_async_call( &self, to: ManagedAddress, From 9de7e9ed69b8a097b8502b91ccaf7eab0ecf643a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 8 Sep 2023 14:48:57 +0300 Subject: [PATCH 52/54] SendWrapper improved docs --- .../contract_base/wrappers/send_wrapper.rs | 134 ++++++++++++++---- 1 file changed, 106 insertions(+), 28 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 790fbd1631..02387193a1 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -50,11 +50,17 @@ where SendRawWrapper::new() } + /// A proxy for calling the system smart contract. + /// + /// Use the methods of this proxy to launch contract calls to the system SC. #[inline] pub fn esdt_system_sc_proxy(&self) -> ESDTSystemSmartContractProxy { ESDTSystemSmartContractProxy::new_proxy_obj() } + /// Convenient way to quickly instance a minimal contract call (with no EGLD, no arguments, etc.) + /// + /// You can further configure this contract call by chaining methods to it. #[inline] pub fn contract_call( &self, @@ -73,7 +79,8 @@ where /// Sends EGLD to a given address, directly. /// Used especially for sending EGLD to regular accounts. - /// If amount is 0 returns without error + /// + /// If the amount is 0, it returns without error. pub fn direct_non_zero_egld(&self, to: &ManagedAddress, amount: &BigUint) { if amount == &0 { return; @@ -96,8 +103,9 @@ where } /// Sends either EGLD, ESDT or NFT to the target address, - /// depending on the token identifier and nonce - /// If amount is 0 returns without error + /// depending on the token identifier and nonce. + /// + /// If the amount is 0, it returns without error. #[inline] pub fn direct_non_zero( &self, @@ -109,6 +117,9 @@ where self.direct_non_zero_with_gas_limit(to, token, nonce, amount, 0, Empty, &[]); } + /// Sends a single ESDT transfer, and calls an endpoint at the destination. + /// + /// Avoid if possible, use a contract call with ESDT transfer instead, and call `.transfer_execute()` on it. #[allow(clippy::too_many_arguments)] pub fn direct_esdt_with_gas_limit( &self, @@ -144,7 +155,11 @@ where } } - /// If amount is 0 returns without error + /// Sends a single ESDT transfer, and calls an endpoint at the destination. + /// + /// If the amount is 0, it returns without error. + /// + /// Avoid if possible, use a contract call with ESDT transfer instead, and call `.transfer_execute()` on it. #[allow(clippy::too_many_arguments)] pub fn direct_non_zero_esdt_with_gas_limit( &self, @@ -172,6 +187,7 @@ where ); } + /// Sends a single ESDT transfer to target address. #[inline] #[allow(clippy::too_many_arguments)] pub fn direct_esdt( @@ -184,7 +200,9 @@ where self.direct_esdt_with_gas_limit(to, token_identifier, nonce, amount, 0, Empty, &[]); } - /// If amount is 0 returns without error + /// Sends a single ESDT transfer to target address. + /// + /// If the amount is 0, it returns without error. pub fn direct_non_zero_esdt_payment( &self, to: &ManagedAddress, @@ -202,6 +220,11 @@ where ); } + /// Sends either EGLD, ESDT or NFT to the target address, + /// depending on the token identifier and nonce. + /// Also and calls an endpoint at the destination. + /// + /// Avoid if possible, use a contract call with ESDT transfer instead, and call `.transfer_execute()` on it. #[allow(clippy::too_many_arguments)] pub fn direct_with_gas_limit( &self, @@ -235,8 +258,13 @@ where ); } } - - /// If amount is 0 returns without error + /// Sends either EGLD, ESDT or NFT to the target address, + /// depending on the token identifier and nonce. + /// Also and calls an endpoint at the destination. + /// + /// If the amount is 0, it returns without error. + /// + /// Avoid if possible, use a contract call with ESDT transfer instead, and call `.transfer_execute()` on it. #[allow(clippy::too_many_arguments)] pub fn direct_non_zero_with_gas_limit( &self, @@ -256,6 +284,7 @@ where self.direct_with_gas_limit(to, token, nonce, amount, gas, endpoint_name, arguments); } + /// Sends multiple ESDT tokens to a target address. pub fn direct_multi( &self, to: &ManagedAddress, @@ -271,9 +300,12 @@ where } /// Performs a simple ESDT/NFT transfer, but via async call. - /// As with any async call, this immediately terminates the execution of the current call. - /// So only use as the last call in your endpoint. - /// If you want to perform multiple transfers, use `self.send().transfer_multiple_esdt_via_async_call()` instead. + /// + /// As with any async call, this immediately terminates the execution of the current call, + /// so only use as the last call in your endpoint. + /// + /// If you want to perform multiple transfers, use `self.send().transfer_multiple_esdt_via_async_call()` instead. + /// /// Note that EGLD can NOT be transfered with this function. pub fn transfer_esdt_via_async_call( &self, @@ -289,11 +321,14 @@ where } /// Performs a simple ESDT/NFT transfer, but via async call. - /// As with any async call, this immediately terminates the execution of the current call. - /// So only use as the last call in your endpoint. + /// + /// As with any async call, this immediately terminates the execution of the current call, + /// so only use as the last call in your endpoint. + /// /// If you want to perform multiple transfers, use `self.send().transfer_multiple_esdt_via_async_call()` instead. /// Note that EGLD can NOT be transfered with this function. - /// If amount is 0 returns without error + /// + /// If the amount is 0, it returns without error. pub fn transfer_esdt_non_zero_via_async_call( &self, to: ManagedAddress, @@ -310,6 +345,7 @@ where .call_and_exit_ignore_callback() } + /// Sends multiple ESDT tokens to a target address, via an async call. pub fn transfer_multiple_esdt_via_async_call( &self, to: ManagedAddress, @@ -321,6 +357,9 @@ where .call_and_exit_ignore_callback() } + /// Creates a call to the `ClaimDeveloperRewards` builtin function. + /// + /// In itself, this does nothing. You need to then call turn the contract call into an async call. pub fn claim_developer_rewards( &self, child_sc_address: ManagedAddress, @@ -328,7 +367,9 @@ where ContractCallNoPayment::new(child_sc_address, CLAIM_DEVELOPER_REWARDS_FUNC_NAME) } - /// Sends a synchronous call to change a smart contract address. + /// Creates a call to the `ChangeOwnerAddress` builtin function. + /// + /// In itself, this does nothing. You need to then call turn the contract call into an async call. pub fn change_owner_address( &self, child_sc_address: ManagedAddress, @@ -354,9 +395,12 @@ where } /// Allows synchronous minting of ESDT/SFT (depending on nonce). Execution is resumed afterwards. + /// /// Note that the SC must have the ESDTLocalMint or ESDTNftAddQuantity roles set, - /// or this will fail with "action is not allowed" + /// or this will fail with "action is not allowed". + /// /// For SFTs, you must use `self.send().esdt_nft_create()` before adding additional quantity. + /// /// This function cannot be used for NFTs. pub fn esdt_local_mint(&self, token: &TokenIdentifier, nonce: u64, amount: &BigUint) { let mut arg_buffer = ManagedArgBuffer::new(); @@ -381,11 +425,14 @@ where } /// Allows synchronous minting of ESDT/SFT (depending on nonce). Execution is resumed afterwards. + /// /// Note that the SC must have the ESDTLocalMint or ESDTNftAddQuantity roles set, - /// or this will fail with "action is not allowed" + /// or this will fail with "action is not allowed". + /// /// For SFTs, you must use `self.send().esdt_nft_create()` before adding additional quantity. /// This function cannot be used for NFTs. - /// If amount is 0 returns without error + /// + /// If the amount is 0, it returns without error. pub fn esdt_non_zero_local_mint( &self, token: &TokenIdentifier, @@ -399,8 +446,9 @@ where } /// Allows synchronous burning of ESDT/SFT/NFT (depending on nonce). Execution is resumed afterwards. + /// /// Note that the SC must have the ESDTLocalBurn or ESDTNftBurn roles set, - /// or this will fail with "action is not allowed" + /// or this will fail with "action is not allowed". pub fn esdt_local_burn(&self, token: &TokenIdentifier, nonce: u64, amount: &BigUint) { let mut arg_buffer = ManagedArgBuffer::new(); let func_name: &str; @@ -423,9 +471,11 @@ where } /// Allows synchronous burning of ESDT/SFT/NFT (depending on nonce). Execution is resumed afterwards. + /// /// Note that the SC must have the ESDTLocalBurn or ESDTNftBurn roles set, - /// or this will fail with "action is not allowed" - /// If amount is 0 returns without error + /// or this will fail with "action is not allowed". + /// + /// If the amount is 0, it returns without error. pub fn esdt_non_zero_local_burn( &self, token: &TokenIdentifier, @@ -454,7 +504,8 @@ where /// Allows burning of multiple ESDT tokens at once. /// /// Will execute a synchronous call to the appropriate burn builtin function for each. - /// If any of the token amounts is 0 skips that token without throwing error + /// + /// If any of the token amounts is 0 skips that token without throwing error. pub fn esdt_non_zero_local_burn_multi(&self, payments: &ManagedVec>) { for payment in payments { self.esdt_non_zero_local_burn( @@ -465,10 +516,13 @@ where } } - /// Creates a new NFT token of a certain type (determined by `token_identifier`). + /// Creates a new NFT token of a certain type (determined by `token_identifier`). /// `attributes` can be any serializable custom struct. - /// This is a built-in function, so the smart contract execution is resumed after. + /// + /// This is a synchronous built-in function call, so the smart contract execution is resumed afterwards. + /// /// Must have ESDTNftCreate role set, or this will fail with "action is not allowed". + /// /// Returns the nonce of the newly created NFT. #[allow(clippy::too_many_arguments)] pub fn esdt_nft_create( @@ -513,12 +567,16 @@ where } } - /// Creates a new NFT token of a certain type (determined by `token_identifier`). - /// `attributes` can be any serializable custom struct. + /// Creates a new NFT token of a certain type (determined by `token_identifier`). + /// + /// `attributes` can be any serializable custom struct. + /// /// This is a built-in function, so the smart contract execution is resumed after. /// Must have ESDTNftCreate role set, or this will fail with "action is not allowed". + /// /// Returns the nonce of the newly created NFT. - /// If amount is 0 returns without error + /// + /// If the amount is 0, it returns without error. #[allow(clippy::too_many_arguments)] pub fn esdt_non_zero_nft_create( &self, @@ -537,6 +595,9 @@ where } } + /// Quick way of creating a new NFT token instance. + /// + /// Returns the new NFT nonce. #[inline] pub fn esdt_nft_create_compact( &self, @@ -547,6 +608,9 @@ where self.esdt_nft_create_compact_named(token, amount, &ManagedBuffer::new(), attributes) } + /// Quick way of creating a new NFT token instance, with custom name. + /// + /// Returns the new NFT nonce. pub fn esdt_nft_create_compact_named( &self, token: &TokenIdentifier, @@ -569,7 +633,11 @@ where ) } - /// If amount is 0 returns without error + /// Quick way of creating a new NFT token instance. + /// + /// Returns the new NFT nonce. + /// + /// If the amount is 0, it returns without error. #[inline] pub fn esdt_non_zero_nft_create_compact( &self, @@ -585,7 +653,11 @@ where ) } - /// If amount is 0 returns without error + /// Quick way of creating a new NFT token instance, with custom name. + /// + /// Returns the new NFT nonce. + /// + /// If the amount is 0, it returns without error. pub fn esdt_non_zero_nft_create_compact_named( &self, token: &TokenIdentifier, @@ -601,6 +673,7 @@ where } /// Sends the NFTs to the buyer address and calculates and sends the required royalties to the NFT creator. + /// /// Returns the payment amount left after sending royalties. #[allow(clippy::too_many_arguments)] pub fn sell_nft( @@ -645,7 +718,9 @@ where } /// Sends the NFTs to the buyer address and calculates and sends the required royalties to the NFT creator. + /// /// Returns the payment amount left after sending royalties. + /// /// If the nft_amount or the payment_amount is 0 returns without error #[allow(clippy::too_many_arguments)] pub fn sell_nft_non_zero( @@ -673,6 +748,7 @@ where } } + /// Adds a new URI to an NFT, via a synchronous builtin function call. pub fn nft_add_uri( &self, token_id: &TokenIdentifier, @@ -682,6 +758,7 @@ where self.nft_add_multiple_uri(token_id, nft_nonce, &ManagedVec::from_single_item(new_uri)); } + /// Adds a multiple URIs to an NFT, via a synchronous builtin function call. pub fn nft_add_multiple_uri( &self, token_id: &TokenIdentifier, @@ -707,6 +784,7 @@ where ); } + /// Changes attributes of an NFT, via a synchronous builtin function call. pub fn nft_update_attributes( &self, token_id: &TokenIdentifier, From 134a64396ec545eebf1be3f880d7e3e0f9d7a915 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 8 Sep 2023 15:37:18 +0300 Subject: [PATCH 53/54] sc 0.43.3, vm 0.5.2 --- CHANGELOG.md | 5 +++++ Cargo.lock | 20 +++++++++---------- contracts/benchmarks/large-storage/Cargo.toml | 4 ++-- .../benchmarks/large-storage/meta/Cargo.toml | 2 +- .../benchmarks/large-storage/wasm/Cargo.toml | 2 +- .../mappers/benchmark-common/Cargo.toml | 4 ++-- .../mappers/linked-list-repeat/Cargo.toml | 4 ++-- .../linked-list-repeat/meta/Cargo.toml | 2 +- .../linked-list-repeat/wasm/Cargo.toml | 2 +- .../benchmarks/mappers/map-repeat/Cargo.toml | 4 ++-- .../mappers/map-repeat/meta/Cargo.toml | 2 +- .../mappers/map-repeat/wasm/Cargo.toml | 2 +- .../mappers/queue-repeat/Cargo.toml | 4 ++-- .../mappers/queue-repeat/meta/Cargo.toml | 2 +- .../mappers/queue-repeat/wasm/Cargo.toml | 2 +- .../benchmarks/mappers/set-repeat/Cargo.toml | 4 ++-- .../mappers/set-repeat/meta/Cargo.toml | 2 +- .../mappers/set-repeat/wasm/Cargo.toml | 2 +- .../mappers/single-value-repeat/Cargo.toml | 4 ++-- .../single-value-repeat/meta/Cargo.toml | 2 +- .../single-value-repeat/wasm/Cargo.toml | 2 +- .../benchmarks/mappers/vec-repeat/Cargo.toml | 4 ++-- .../mappers/vec-repeat/meta/Cargo.toml | 2 +- .../mappers/vec-repeat/wasm/Cargo.toml | 2 +- .../benchmarks/send-tx-repeat/Cargo.toml | 4 ++-- .../benchmarks/send-tx-repeat/meta/Cargo.toml | 2 +- .../benchmarks/send-tx-repeat/wasm/Cargo.toml | 2 +- contracts/benchmarks/str-repeat/Cargo.toml | 4 ++-- .../benchmarks/str-repeat/meta/Cargo.toml | 2 +- .../benchmarks/str-repeat/wasm/Cargo.toml | 2 +- contracts/core/price-aggregator/Cargo.toml | 8 ++++---- .../core/price-aggregator/meta/Cargo.toml | 4 ++-- .../core/price-aggregator/wasm/Cargo.toml | 2 +- contracts/core/wegld-swap/Cargo.toml | 8 ++++---- contracts/core/wegld-swap/meta/Cargo.toml | 4 ++-- contracts/core/wegld-swap/wasm/Cargo.toml | 2 +- contracts/examples/adder/Cargo.toml | 4 ++-- contracts/examples/adder/interact/Cargo.toml | 2 +- contracts/examples/adder/meta/Cargo.toml | 2 +- contracts/examples/adder/wasm/Cargo.toml | 2 +- .../bonding-curve-contract/Cargo.toml | 6 +++--- .../bonding-curve-contract/meta/Cargo.toml | 2 +- .../bonding-curve-contract/wasm/Cargo.toml | 2 +- contracts/examples/check-pause/Cargo.toml | 6 +++--- .../examples/check-pause/meta/Cargo.toml | 2 +- .../examples/check-pause/wasm/Cargo.toml | 2 +- .../examples/crowdfunding-esdt/Cargo.toml | 4 ++-- .../crowdfunding-esdt/meta/Cargo.toml | 2 +- .../crowdfunding-esdt/wasm/Cargo.toml | 2 +- contracts/examples/crypto-bubbles/Cargo.toml | 4 ++-- .../examples/crypto-bubbles/meta/Cargo.toml | 2 +- .../examples/crypto-bubbles/wasm/Cargo.toml | 2 +- .../crypto-kitties/common/kitty/Cargo.toml | 2 +- .../crypto-kitties/common/random/Cargo.toml | 2 +- .../crypto-kitties/kitty-auction/Cargo.toml | 4 ++-- .../kitty-auction/meta/Cargo.toml | 2 +- .../kitty-auction/wasm/Cargo.toml | 2 +- .../kitty-genetic-alg/Cargo.toml | 4 ++-- .../kitty-genetic-alg/meta/Cargo.toml | 2 +- .../kitty-genetic-alg/wasm/Cargo.toml | 2 +- .../crypto-kitties/kitty-ownership/Cargo.toml | 4 ++-- .../kitty-ownership/meta/Cargo.toml | 2 +- .../kitty-ownership/wasm/Cargo.toml | 2 +- contracts/examples/crypto-zombies/Cargo.toml | 4 ++-- .../examples/crypto-zombies/meta/Cargo.toml | 2 +- .../examples/crypto-zombies/wasm/Cargo.toml | 2 +- contracts/examples/digital-cash/Cargo.toml | 4 ++-- .../examples/digital-cash/meta/Cargo.toml | 2 +- .../examples/digital-cash/wasm/Cargo.toml | 2 +- contracts/examples/empty/Cargo.toml | 4 ++-- contracts/examples/empty/meta/Cargo.toml | 2 +- contracts/examples/empty/wasm/Cargo.toml | 2 +- .../esdt-transfer-with-fee/Cargo.toml | 4 ++-- .../esdt-transfer-with-fee/meta/Cargo.toml | 2 +- .../esdt-transfer-with-fee/wasm/Cargo.toml | 2 +- contracts/examples/factorial/Cargo.toml | 4 ++-- contracts/examples/factorial/meta/Cargo.toml | 2 +- contracts/examples/factorial/wasm/Cargo.toml | 2 +- contracts/examples/fractional-nfts/Cargo.toml | 6 +++--- .../examples/fractional-nfts/meta/Cargo.toml | 2 +- .../examples/fractional-nfts/wasm/Cargo.toml | 2 +- contracts/examples/lottery-esdt/Cargo.toml | 4 ++-- .../examples/lottery-esdt/meta/Cargo.toml | 2 +- .../examples/lottery-esdt/wasm/Cargo.toml | 2 +- contracts/examples/multisig/Cargo.toml | 8 ++++---- .../examples/multisig/interact/Cargo.toml | 6 +++--- contracts/examples/multisig/meta/Cargo.toml | 2 +- .../multisig/wasm-multisig-full/Cargo.toml | 2 +- .../multisig/wasm-multisig-view/Cargo.toml | 2 +- contracts/examples/multisig/wasm/Cargo.toml | 2 +- contracts/examples/nft-minter/Cargo.toml | 4 ++-- contracts/examples/nft-minter/meta/Cargo.toml | 2 +- contracts/examples/nft-minter/wasm/Cargo.toml | 2 +- .../examples/nft-storage-prepay/Cargo.toml | 4 ++-- .../nft-storage-prepay/meta/Cargo.toml | 2 +- .../nft-storage-prepay/wasm/Cargo.toml | 2 +- .../examples/order-book/factory/Cargo.toml | 4 ++-- .../order-book/factory/meta/Cargo.toml | 2 +- .../order-book/factory/wasm/Cargo.toml | 2 +- contracts/examples/order-book/pair/Cargo.toml | 4 ++-- .../examples/order-book/pair/meta/Cargo.toml | 2 +- .../examples/order-book/pair/wasm/Cargo.toml | 2 +- contracts/examples/ping-pong-egld/Cargo.toml | 4 ++-- .../examples/ping-pong-egld/meta/Cargo.toml | 2 +- .../examples/ping-pong-egld/wasm/Cargo.toml | 2 +- contracts/examples/proxy-pause/Cargo.toml | 4 ++-- .../examples/proxy-pause/meta/Cargo.toml | 2 +- .../examples/proxy-pause/wasm/Cargo.toml | 2 +- .../examples/rewards-distribution/Cargo.toml | 6 +++--- .../rewards-distribution/meta/Cargo.toml | 2 +- .../rewards-distribution/wasm/Cargo.toml | 2 +- contracts/examples/seed-nft-minter/Cargo.toml | 6 +++--- .../examples/seed-nft-minter/meta/Cargo.toml | 2 +- .../examples/seed-nft-minter/wasm/Cargo.toml | 2 +- contracts/examples/token-release/Cargo.toml | 4 ++-- .../examples/token-release/meta/Cargo.toml | 2 +- .../examples/token-release/wasm/Cargo.toml | 2 +- contracts/feature-tests/abi-tester/Cargo.toml | 6 +++--- .../abi_tester_expected_main.abi.json | 2 +- .../abi_tester_expected_view.abi.json | 2 +- .../feature-tests/abi-tester/meta/Cargo.toml | 2 +- .../abi-tester/wasm-abi-tester-ev/Cargo.toml | 2 +- .../feature-tests/abi-tester/wasm/Cargo.toml | 2 +- .../feature-tests/alloc-features/Cargo.toml | 4 ++-- .../alloc-features/meta/Cargo.toml | 2 +- .../alloc-features/wasm/Cargo.toml | 2 +- .../feature-tests/basic-features/Cargo.toml | 6 +++--- .../basic-features/interact/Cargo.toml | 2 +- .../basic-features/meta/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../basic-features/wasm/Cargo.toml | 2 +- .../big-float-features/Cargo.toml | 4 ++-- .../big-float-features/meta/Cargo.toml | 2 +- .../big-float-features/wasm/Cargo.toml | 2 +- .../feature-tests/composability/Cargo.toml | 2 +- .../builtin-func-features/Cargo.toml | 4 ++-- .../builtin-func-features/meta/Cargo.toml | 2 +- .../builtin-func-features/wasm/Cargo.toml | 2 +- .../esdt-contract-pair/Cargo.toml | 4 ++-- .../first-contract/Cargo.toml | 4 ++-- .../first-contract/meta/Cargo.toml | 4 ++-- .../first-contract/wasm/Cargo.toml | 2 +- .../second-contract/Cargo.toml | 4 ++-- .../second-contract/meta/Cargo.toml | 4 ++-- .../second-contract/wasm/Cargo.toml | 2 +- .../Cargo.toml | 4 ++-- .../child/Cargo.toml | 4 ++-- .../child/meta/Cargo.toml | 4 ++-- .../child/wasm/Cargo.toml | 2 +- .../parent/Cargo.toml | 4 ++-- .../parent/meta/Cargo.toml | 4 ++-- .../parent/wasm/Cargo.toml | 2 +- .../composability/forwarder-queue/Cargo.toml | 6 +++--- .../forwarder-queue/meta/Cargo.toml | 2 +- .../wasm-forwarder-queue-promises/Cargo.toml | 2 +- .../forwarder-queue/wasm/Cargo.toml | 2 +- .../composability/forwarder-raw/Cargo.toml | 4 ++-- .../forwarder-raw/meta/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../forwarder-raw/wasm/Cargo.toml | 2 +- .../composability/forwarder/Cargo.toml | 4 ++-- .../composability/forwarder/meta/Cargo.toml | 2 +- .../composability/forwarder/wasm/Cargo.toml | 2 +- .../composability/interact/Cargo.toml | 4 ++-- .../local-esdt-and-nft/Cargo.toml | 4 ++-- .../local-esdt-and-nft/meta/Cargo.toml | 2 +- .../local-esdt-and-nft/wasm/Cargo.toml | 2 +- .../promises-features/Cargo.toml | 4 ++-- .../promises-features/meta/Cargo.toml | 2 +- .../promises-features/wasm/Cargo.toml | 2 +- .../composability/proxy-test-first/Cargo.toml | 4 ++-- .../proxy-test-first/meta/Cargo.toml | 2 +- .../proxy-test-first/wasm/Cargo.toml | 2 +- .../proxy-test-second/Cargo.toml | 4 ++-- .../proxy-test-second/meta/Cargo.toml | 2 +- .../proxy-test-second/wasm/Cargo.toml | 2 +- .../composability/recursive-caller/Cargo.toml | 4 ++-- .../recursive-caller/meta/Cargo.toml | 2 +- .../recursive-caller/wasm/Cargo.toml | 2 +- .../transfer-role-features/Cargo.toml | 6 +++--- .../transfer-role-features/meta/Cargo.toml | 2 +- .../transfer-role-features/wasm/Cargo.toml | 2 +- .../composability/vault/Cargo.toml | 4 ++-- .../composability/vault/meta/Cargo.toml | 2 +- .../vault/wasm-vault-promises/Cargo.toml | 2 +- .../composability/vault/wasm/Cargo.toml | 2 +- .../crowdfunding-erc20/Cargo.toml | 4 ++-- .../crowdfunding-erc20/meta/Cargo.toml | 2 +- .../crowdfunding-erc20/wasm/Cargo.toml | 2 +- .../erc1155-marketplace/Cargo.toml | 4 ++-- .../erc1155-marketplace/meta/Cargo.toml | 2 +- .../erc1155-marketplace/wasm/Cargo.toml | 2 +- .../erc1155-user-mock/Cargo.toml | 4 ++-- .../erc1155-user-mock/meta/Cargo.toml | 2 +- .../erc1155-user-mock/wasm/Cargo.toml | 2 +- .../erc-style-contracts/erc1155/Cargo.toml | 4 ++-- .../erc1155/meta/Cargo.toml | 2 +- .../erc1155/wasm/Cargo.toml | 2 +- .../erc-style-contracts/erc20/Cargo.toml | 4 ++-- .../erc-style-contracts/erc20/meta/Cargo.toml | 2 +- .../erc-style-contracts/erc20/wasm/Cargo.toml | 2 +- .../erc-style-contracts/erc721/Cargo.toml | 4 ++-- .../erc721/meta/Cargo.toml | 2 +- .../erc721/wasm/Cargo.toml | 2 +- .../lottery-erc20/Cargo.toml | 4 ++-- .../lottery-erc20/meta/Cargo.toml | 2 +- .../lottery-erc20/wasm/Cargo.toml | 2 +- .../esdt-system-sc-mock/Cargo.toml | 4 ++-- .../esdt-system-sc-mock/meta/Cargo.toml | 2 +- .../esdt-system-sc-mock/wasm/Cargo.toml | 2 +- .../formatted-message-features/Cargo.toml | 4 ++-- .../meta/Cargo.toml | 2 +- .../wasm/Cargo.toml | 2 +- .../managed-map-features/Cargo.toml | 4 ++-- .../managed-map-features/meta/Cargo.toml | 2 +- .../managed-map-features/wasm/Cargo.toml | 2 +- .../multi-contract-features/Cargo.toml | 4 ++-- .../multi-contract-features/meta/Cargo.toml | 2 +- .../wasm-multi-contract-alt-impl/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../multi-contract-features/wasm/Cargo.toml | 2 +- .../panic-message-features/Cargo.toml | 4 ++-- .../panic-message-features/meta/Cargo.toml | 2 +- .../panic-message-features/wasm/Cargo.toml | 2 +- .../feature-tests/payable-features/Cargo.toml | 4 ++-- .../payable-features/meta/Cargo.toml | 2 +- .../payable-features/wasm/Cargo.toml | 2 +- .../rust-snippets-generator-test/Cargo.toml | 4 ++-- .../interact-rs/Cargo.toml | 2 +- .../meta/Cargo.toml | 2 +- .../rust-snippets-generator-test/src/lib.rs | 2 +- .../wasm/Cargo.toml | 2 +- .../rust-testing-framework-tester/Cargo.toml | 4 ++-- .../meta/Cargo.toml | 2 +- .../wasm/Cargo.toml | 2 +- contracts/feature-tests/use-module/Cargo.toml | 8 ++++---- .../feature-tests/use-module/meta/Cargo.toml | 2 +- .../use-module/meta/abi/Cargo.toml | 4 ++-- .../use_module_expected_main.abi.json | 2 +- .../use_module_expected_view.abi.json | 2 +- .../wasm-use-module-view/Cargo.toml | 2 +- .../feature-tests/use-module/wasm/Cargo.toml | 2 +- contracts/modules/Cargo.toml | 4 ++-- data/codec-derive/Cargo.toml | 2 +- framework/base/Cargo.toml | 4 ++-- framework/derive/Cargo.toml | 4 ++-- framework/meta/Cargo.toml | 4 ++-- .../generate_snippets/snippet_crate_gen.rs | 2 +- framework/meta/src/version_history.rs | 3 ++- framework/scenario/Cargo.toml | 8 ++++---- framework/snippets/Cargo.toml | 4 ++-- framework/wasm-adapter/Cargo.toml | 4 ++-- tools/mxpy-snippet-generator/Cargo.toml | 2 +- tools/rust-debugger/format-tests/Cargo.toml | 6 +++--- vm/Cargo.toml | 2 +- 257 files changed, 383 insertions(+), 377 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9096f62c39..e184ed753f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,11 @@ They are: - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. +## [sc 0.43.3, vm 0.5.2] - 2023-09-08 +- Added several new methods in the `SendWrapper`, which perform EGLD & ESDT transfers but don't do anything if the value is zero. +- Added the `DeleteUsername` builtin function to the VM. +- Minor fixes in API wrapper constructors. + ## [sc 0.43.2] - 2023-08-18 - Template tool tag argument validation bugfix. diff --git a/Cargo.lock b/Cargo.lock index 58652d2cb9..36210ff428 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -2021,7 +2021,7 @@ dependencies = [ [[package]] name = "multiversx-chain-vm" -version = "0.5.1" +version = "0.5.2" dependencies = [ "bitflags 1.3.2", "ed25519-dalek", @@ -2056,7 +2056,7 @@ dependencies = [ [[package]] name = "multiversx-price-aggregator-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "arrayvec", "multiversx-sc", @@ -2075,7 +2075,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags 1.3.2", "hashbrown 0.13.2", @@ -2106,7 +2106,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -2117,7 +2117,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.43.2" +version = "0.43.3" dependencies = [ "anyhow", "clap", @@ -2142,14 +2142,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.43.2" +version = "0.43.3" dependencies = [ "base64 0.13.1", "bech32", @@ -2175,7 +2175,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.43.2" +version = "0.43.3" dependencies = [ "base64 0.13.1", "env_logger", @@ -2189,7 +2189,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] @@ -2221,7 +2221,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index b5615804a4..e6c9b6f126 100644 --- a/contracts/benchmarks/large-storage/Cargo.toml +++ b/contracts/benchmarks/large-storage/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/large_storage.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index c3a9decd31..19190826e2 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index 1a0ba7f0da..9598c25209 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 30aba706e1..6173833daa 100644 --- a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml +++ b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index 91156f5a96..1ac0f36301 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml @@ -13,9 +13,9 @@ path = "../benchmark-common" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml index 5e8723be8c..27060e4f04 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index 90a5a2bc5e..937e583e31 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index cbe3ec4b54..2c904f620e 100644 --- a/contracts/benchmarks/mappers/map-repeat/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/Cargo.toml @@ -13,9 +13,9 @@ path = "../benchmark-common" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index 2ae86237d3..593391d778 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index eb2f36deda..1e6047ffae 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index 41a983309a..0732e366cf 100644 --- a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml @@ -13,9 +13,9 @@ path = "../benchmark-common" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index a1bc5ca4fe..8a0b80468c 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index cdaaf03c05..2ea9a50587 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index 29599c46da..4e2b984249 100644 --- a/contracts/benchmarks/mappers/set-repeat/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/Cargo.toml @@ -13,9 +13,9 @@ path = "../benchmark-common" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index 013b7b9556..3ed5cd35ff 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index 8a10e3f8e1..5a4ac8346a 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/single-value-repeat/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/Cargo.toml index 4bfe0ec233..5d259b2e69 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/Cargo.toml @@ -13,9 +13,9 @@ path = "../benchmark-common" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml index 004fe70611..3990116359 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 1549157496..cde4dbd050 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index fe7bcae4f8..836a4f6039 100644 --- a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml @@ -13,9 +13,9 @@ path = "../benchmark-common" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index 8e70b188f0..8ad571f228 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index 1b3a76096d..f8d11029bc 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index 924f30fca2..f3046bb4f7 100644 --- a/contracts/benchmarks/send-tx-repeat/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/send_tx_repeat.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index 41cb98c422..07a579ccbb 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index cb0a6e13ca..f609243091 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 12b93a4c1a..051f6a3d61 100644 --- a/contracts/benchmarks/str-repeat/Cargo.toml +++ b/contracts/benchmarks/str-repeat/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = "src/str_repeat.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index 65c8dc8f09..2a32fd616a 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index e05ddecd77..ee8ad57673 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index 5d6c823bfa..fda57544ca 100644 --- a/contracts/core/price-aggregator/Cargo.toml +++ b/contracts/core/price-aggregator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-price-aggregator-sc" -version = "0.43.2" +version = "0.43.3" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index a71870683b..5e491076a3 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,9 +8,9 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index 3c2d7ea6ae..18f6920307 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index 3e87e69e3c..38a9cb5850 100644 --- a/contracts/core/wegld-swap/Cargo.toml +++ b/contracts/core/wegld-swap/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-wegld-swap-sc" -version = "0.43.2" +version = "0.43.3" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index 35445fd5ce..075ea00368 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,9 +11,9 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index 38d55a1bae..c1a5ab5a44 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -24,5 +24,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index 48def16625..1a3ec99b71 100644 --- a/contracts/examples/adder/Cargo.toml +++ b/contracts/examples/adder/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/adder.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index 4e3bf0d78f..58a92e31a0 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.7.2" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index c223e55523..a3209c1877 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index 69ea131e1a..b11ffea4a0 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index 79c70605d7..3ac6f29ad0 100644 --- a/contracts/examples/bonding-curve-contract/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/Cargo.toml @@ -9,14 +9,14 @@ publish = false path = "src/bonding_curve_contract.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index b41d42f322..bea65c06ef 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index 68d9492af6..5a3699a7ac 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index b1c13ae43f..9ede396816 100644 --- a/contracts/examples/check-pause/Cargo.toml +++ b/contracts/examples/check-pause/Cargo.toml @@ -12,14 +12,14 @@ path = "src/check_pause.rs" num-bigint = "0.4.2" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index 76e7bf4d04..a0393ab8c8 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,5 +9,5 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index a6d3357b5d..62f7e35e94 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -24,5 +24,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index 3084006c88..e4a4fdebbe 100644 --- a/contracts/examples/crowdfunding-esdt/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/crowdfunding_esdt.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index d3d4ac2f18..9dbfbb02e1 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 5485cb0495..97cedb79fb 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 17fcdf79be..21392c1ac4 100644 --- a/contracts/examples/crypto-bubbles/Cargo.toml +++ b/contracts/examples/crypto-bubbles/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/crypto_bubbles.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index d3b5c51ac8..8658b473fc 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 0b70d46b94..d99db96954 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/common/kitty/Cargo.toml b/contracts/examples/crypto-kitties/common/kitty/Cargo.toml index d03167c073..8046839902 100644 --- a/contracts/examples/crypto-kitties/common/kitty/Cargo.toml +++ b/contracts/examples/crypto-kitties/common/kitty/Cargo.toml @@ -9,7 +9,7 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/base" [dependencies.random] diff --git a/contracts/examples/crypto-kitties/common/random/Cargo.toml b/contracts/examples/crypto-kitties/common/random/Cargo.toml index 7b41d3be5d..3d5e4bab30 100644 --- a/contracts/examples/crypto-kitties/common/random/Cargo.toml +++ b/contracts/examples/crypto-kitties/common/random/Cargo.toml @@ -8,5 +8,5 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index 0db5a9e282..4de2d0c246 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml @@ -17,9 +17,9 @@ version = "0.0.0" path = "../kitty-ownership" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml index 6de40b26da..3744bcab84 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index d5270ab572..87ce9dc4c9 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -21,5 +21,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index bb833a8448..50b2f8d08c 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml @@ -18,9 +18,9 @@ version = "0.0.0" path = "../common/random" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml index d2e757f0b8..0c8b4539b9 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml index 17a54d52a2..4fbfe05ab1 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -21,5 +21,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index 833eb3c6cd..9bbd5a0b39 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml @@ -21,9 +21,9 @@ version = "0.0.0" path = "../kitty-genetic-alg" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml index 53fa117c9f..4aa2fd1d7a 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index 1386479ef1..8c305258ca 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -21,5 +21,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 4f166cb5f2..53a0887ee4 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index 917776d216..cc752312ca 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index 3584c4a7b4..60be0b1bb9 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -18,7 +18,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index f26ddb9a93..70daa9271a 100644 --- a/contracts/examples/digital-cash/Cargo.toml +++ b/contracts/examples/digital-cash/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/digital_cash.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 753885ef5d..2ea4fe859c 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index befaa69133..0afe7cca2b 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -24,5 +24,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index 0f5862731e..820d28d995 100644 --- a/contracts/examples/empty/Cargo.toml +++ b/contracts/examples/empty/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/empty.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 18d4b7c074..67d2f41927 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index 628a4577ff..022bbc8df1 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -18,7 +18,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/esdt-transfer-with-fee/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/Cargo.toml index 0f56cd3dde..da822980d5 100644 --- a/contracts/examples/esdt-transfer-with-fee/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/esdt_transfer_with_fee.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml index 08471b22a2..9ac753f221 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index cfb26a7fb4..ddd948396e 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index f36612e44c..67bbc0d497 100644 --- a/contracts/examples/factorial/Cargo.toml +++ b/contracts/examples/factorial/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/factorial.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 5541d72bdf..f77ac86c6d 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 8d1c452d65..e6eacf85d8 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index 854ade19d8..236358364d 100644 --- a/contracts/examples/fractional-nfts/Cargo.toml +++ b/contracts/examples/fractional-nfts/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/fractional_nfts.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index 6a4c940be6..c6fd5c74d1 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index 0962f119dc..faeac90420 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index 7120cf9174..a4ebd97e20 100644 --- a/contracts/examples/lottery-esdt/Cargo.toml +++ b/contracts/examples/lottery-esdt/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/lottery.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index 6c24ccdd0a..ae47a550e5 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index 5f604631a3..dd4ae45079 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index 8bca564c8c..7ada995f95 100644 --- a/contracts/examples/multisig/Cargo.toml +++ b/contracts/examples/multisig/Cargo.toml @@ -9,15 +9,15 @@ publish = false path = "src/multisig.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.43.2" +version = "0.43.3" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index f740b1fdeb..8bc047e945 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.7.2" path = ".." [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.43.2" +version = "=0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 7452592c87..0356136db5 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index 16776e5d1a..5ae4b81a61 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml index d02ccef685..6765c0a28b 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index 1ee31a40d3..0cc4eccf8f 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index 63aa27d110..eb6de175cd 100644 --- a/contracts/examples/nft-minter/Cargo.toml +++ b/contracts/examples/nft-minter/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 68ac294cf6..5c10f4d97f 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index 3d1865d3c3..f6ff2d8094 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index 26b72521b5..9aa8cbb4e5 100644 --- a/contracts/examples/nft-storage-prepay/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/Cargo.toml @@ -10,9 +10,9 @@ path = "src/nft_storage_prepay.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index cf463672ff..cb93548f0e 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,5 +11,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 6e505f730a..a6540089df 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -24,5 +24,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index f092b4c125..a016b5f42d 100644 --- a/contracts/examples/order-book/factory/Cargo.toml +++ b/contracts/examples/order-book/factory/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index 04b00f9aac..24f3679ea0 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index 2954646098..4db2963a85 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -23,5 +23,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index 674444c2af..eb51594d89 100644 --- a/contracts/examples/order-book/pair/Cargo.toml +++ b/contracts/examples/order-book/pair/Cargo.toml @@ -8,9 +8,9 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index ae5d77b202..d21095c10b 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index 30edd8f7dd..db1025b505 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -23,5 +23,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index f6dd4bba16..17600fb4ad 100644 --- a/contracts/examples/ping-pong-egld/Cargo.toml +++ b/contracts/examples/ping-pong-egld/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = "src/ping_pong.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index 75028b3539..89d5c539be 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index 06dddf5b92..8e6bbf7d6b 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -21,5 +21,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index d694fc1051..e7a3878f49 100644 --- a/contracts/examples/proxy-pause/Cargo.toml +++ b/contracts/examples/proxy-pause/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/proxy_pause.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies.check-pause] diff --git a/contracts/examples/proxy-pause/meta/Cargo.toml b/contracts/examples/proxy-pause/meta/Cargo.toml index 7558f63f83..151fe877d4 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,5 +11,5 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index c664b17a70..c332ff0d59 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -24,5 +24,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index 3b44a6c51a..d6ffb457ef 100644 --- a/contracts/examples/rewards-distribution/Cargo.toml +++ b/contracts/examples/rewards-distribution/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/rewards_distribution.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index d6574651b9..372a18536b 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,5 +11,5 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index d86faec26e..1572491f31 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -24,5 +24,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index 700a5124a8..062498dd30 100644 --- a/contracts/examples/seed-nft-minter/Cargo.toml +++ b/contracts/examples/seed-nft-minter/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/seed_nft_minter.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index e2bddc08ec..a97c3a5818 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,5 +11,5 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index fd3a26106d..7115212612 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -24,5 +24,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 6945ea6341..803885941e 100644 --- a/contracts/examples/token-release/Cargo.toml +++ b/contracts/examples/token-release/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = "src/token_release.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index 9db0a14901..198e45a6fb 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,6 +10,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index 00a593eda6..318812b5ff 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -21,5 +21,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index a42188c02f..daeef9121f 100644 --- a/contracts/feature-tests/abi-tester/Cargo.toml +++ b/contracts/feature-tests/abi-tester/Cargo.toml @@ -9,14 +9,14 @@ publish = false path = "src/abi_tester.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/meta" diff --git a/contracts/feature-tests/abi-tester/abi_tester_expected_main.abi.json b/contracts/feature-tests/abi-tester/abi_tester_expected_main.abi.json index db6c18f282..58afe19184 100644 --- a/contracts/feature-tests/abi-tester/abi_tester_expected_main.abi.json +++ b/contracts/feature-tests/abi-tester/abi_tester_expected_main.abi.json @@ -14,7 +14,7 @@ }, "framework": { "name": "multiversx-sc", - "version": "0.43.2" + "version": "0.43.3" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/abi_tester_expected_view.abi.json b/contracts/feature-tests/abi-tester/abi_tester_expected_view.abi.json index a8c76ba7f5..e82a5b9e50 100644 --- a/contracts/feature-tests/abi-tester/abi_tester_expected_view.abi.json +++ b/contracts/feature-tests/abi-tester/abi_tester_expected_view.abi.json @@ -14,7 +14,7 @@ }, "framework": { "name": "multiversx-sc", - "version": "0.43.2" + "version": "0.43.3" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index f1b700360c..d2f292b32d 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/abi-tester/wasm-abi-tester-ev/Cargo.toml b/contracts/feature-tests/abi-tester/wasm-abi-tester-ev/Cargo.toml index b6997155d5..10a4ee83e0 100644 --- a/contracts/feature-tests/abi-tester/wasm-abi-tester-ev/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm-abi-tester-ev/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.toml b/contracts/feature-tests/abi-tester/wasm/Cargo.toml index 1267193e31..aec3361d6a 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index c3924d350d..b237d69be5 100644 --- a/contracts/feature-tests/alloc-features/Cargo.toml +++ b/contracts/feature-tests/alloc-features/Cargo.toml @@ -9,12 +9,12 @@ publish = false path = "src/alloc_features_main.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies.esdt-system-sc-mock] diff --git a/contracts/feature-tests/alloc-features/meta/Cargo.toml b/contracts/feature-tests/alloc-features/meta/Cargo.toml index db7fb3123a..970472e4f5 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index 3670ab1691..8889f9cc13 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index f489aa38e5..3abb1f6d03 100644 --- a/contracts/feature-tests/basic-features/Cargo.toml +++ b/contracts/feature-tests/basic-features/Cargo.toml @@ -9,15 +9,15 @@ publish = false path = "src/basic_features_main.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dev-dependencies.esdt-system-sc-mock] diff --git a/contracts/feature-tests/basic-features/interact/Cargo.toml b/contracts/feature-tests/basic-features/interact/Cargo.toml index f0f0913a06..e19867eb71 100644 --- a/contracts/feature-tests/basic-features/interact/Cargo.toml +++ b/contracts/feature-tests/basic-features/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.7.2" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index e25c732ab0..63d31e6e1b 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/basic-features/wasm-basic-features-storage-bytes/Cargo.toml b/contracts/feature-tests/basic-features/wasm-basic-features-storage-bytes/Cargo.toml index 0ef31418a4..40b9135a54 100644 --- a/contracts/feature-tests/basic-features/wasm-basic-features-storage-bytes/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm-basic-features-storage-bytes/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.toml b/contracts/feature-tests/basic-features/wasm/Cargo.toml index ceab7933dd..80274cfe8f 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/big-float-features/Cargo.toml b/contracts/feature-tests/big-float-features/Cargo.toml index 942d182e21..20524b0888 100644 --- a/contracts/feature-tests/big-float-features/Cargo.toml +++ b/contracts/feature-tests/big-float-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/big_float_main.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies.esdt-system-sc-mock] diff --git a/contracts/feature-tests/big-float-features/meta/Cargo.toml b/contracts/feature-tests/big-float-features/meta/Cargo.toml index 52daaf3627..c67c2a3c88 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index f73189297d..7932c79b03 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index 85ec0f41bb..5c459efe80 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -33,5 +33,5 @@ path = "recursive-caller" path = "vault" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/composability/builtin-func-features/Cargo.toml b/contracts/feature-tests/composability/builtin-func-features/Cargo.toml index abc8864694..f7f8405e5a 100644 --- a/contracts/feature-tests/composability/builtin-func-features/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/builtin_func_features.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml index 10692099ba..a18e361f56 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml index 06127c0d40..1d741a9130 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/esdt-contract-pair/Cargo.toml b/contracts/feature-tests/composability/esdt-contract-pair/Cargo.toml index ed6153b737..f3af8360fc 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/Cargo.toml +++ b/contracts/feature-tests/composability/esdt-contract-pair/Cargo.toml @@ -12,9 +12,9 @@ path = "first-contract" path = "second-contract" [dev-dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/Cargo.toml b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/Cargo.toml index e167c80fb0..2dbd311151 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/Cargo.toml +++ b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/Cargo.toml @@ -10,10 +10,10 @@ path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/meta/Cargo.toml b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/meta/Cargo.toml index ff1c9ba929..36ad539a62 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/meta/Cargo.toml +++ b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/meta/Cargo.toml @@ -8,9 +8,9 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/wasm/Cargo.toml b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/wasm/Cargo.toml index 0eb1713ef7..bb6d71c4e7 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/esdt-contract-pair/second-contract/Cargo.toml b/contracts/feature-tests/composability/esdt-contract-pair/second-contract/Cargo.toml index 1e670eef6e..7ba413c8ec 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/second-contract/Cargo.toml +++ b/contracts/feature-tests/composability/esdt-contract-pair/second-contract/Cargo.toml @@ -10,10 +10,10 @@ path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/esdt-contract-pair/second-contract/meta/Cargo.toml b/contracts/feature-tests/composability/esdt-contract-pair/second-contract/meta/Cargo.toml index 1e49006381..6c947b598c 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/second-contract/meta/Cargo.toml +++ b/contracts/feature-tests/composability/esdt-contract-pair/second-contract/meta/Cargo.toml @@ -8,9 +8,9 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/esdt-contract-pair/second-contract/wasm/Cargo.toml b/contracts/feature-tests/composability/esdt-contract-pair/second-contract/wasm/Cargo.toml index 39af7eb30f..8347bea97d 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/second-contract/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/esdt-contract-pair/second-contract/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/Cargo.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/Cargo.toml index 871a48b7f0..6d18d9fc1d 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/Cargo.toml +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/Cargo.toml @@ -16,9 +16,9 @@ path = "parent" path = "child" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/Cargo.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/Cargo.toml index 0a98e01e34..bda76c98e1 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/Cargo.toml +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/Cargo.toml @@ -10,9 +10,9 @@ path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/meta/Cargo.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/meta/Cargo.toml index 8e69dbabab..f9632bda38 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/meta/Cargo.toml +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/meta/Cargo.toml @@ -8,9 +8,9 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/wasm/Cargo.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/wasm/Cargo.toml index 7ede9cc975..222fe506db 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/Cargo.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/Cargo.toml index ad6e10547a..2db4361b71 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/Cargo.toml +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/Cargo.toml @@ -13,10 +13,10 @@ path = "src/lib.rs" path = "../child" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/meta/Cargo.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/meta/Cargo.toml index 52780e60fb..2e4c9cf02c 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/meta/Cargo.toml +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/meta/Cargo.toml @@ -8,9 +8,9 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/wasm/Cargo.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/wasm/Cargo.toml index a6346f7e6d..027ae92fb4 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml index 0c6b54f548..04423ade98 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -15,14 +15,14 @@ promises = ["multiversx-sc/promises"] path = "../vault" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml index c6e5fe07a1..212e410b16 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/forwarder-queue/wasm-forwarder-queue-promises/Cargo.toml b/contracts/feature-tests/composability/forwarder-queue/wasm-forwarder-queue-promises/Cargo.toml index c2713ca682..fc1b1ffca0 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm-forwarder-queue-promises/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm-forwarder-queue-promises/Cargo.toml @@ -18,7 +18,7 @@ path = ".." features = ["promises"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml index d0f8dc0daa..4dace2ad3b 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder-raw/Cargo.toml b/contracts/feature-tests/composability/forwarder-raw/Cargo.toml index 90fb7168c0..0bdaf4d043 100644 --- a/contracts/feature-tests/composability/forwarder-raw/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/forwarder_raw.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml index 230635934a..8cdca54b92 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/Cargo.toml b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/Cargo.toml index fb98e5d695..6cf3ce564d 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-sync-call/Cargo.toml b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-sync-call/Cargo.toml index 51461e3586..b1845d8f78 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-sync-call/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-sync-call/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml index f7da566b78..33a0ce085d 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index 805ef54572..dec2957554 100644 --- a/contracts/feature-tests/composability/forwarder/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/Cargo.toml @@ -12,10 +12,10 @@ path = "src/forwarder_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index fa6f71fc44..19c2c26200 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index c46511728f..658503462a 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index 3e1b4a509f..197825be22 100644 --- a/contracts/feature-tests/composability/interact/Cargo.toml +++ b/contracts/feature-tests/composability/interact/Cargo.toml @@ -24,9 +24,9 @@ path = "../forwarder-queue" path = "../promises-features" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/composability/local-esdt-and-nft/Cargo.toml b/contracts/feature-tests/composability/local-esdt-and-nft/Cargo.toml index a092e2c051..78d1948bd5 100644 --- a/contracts/feature-tests/composability/local-esdt-and-nft/Cargo.toml +++ b/contracts/feature-tests/composability/local-esdt-and-nft/Cargo.toml @@ -10,9 +10,9 @@ path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/local-esdt-and-nft/meta/Cargo.toml b/contracts/feature-tests/composability/local-esdt-and-nft/meta/Cargo.toml index 73e0380d21..18c47c2530 100644 --- a/contracts/feature-tests/composability/local-esdt-and-nft/meta/Cargo.toml +++ b/contracts/feature-tests/composability/local-esdt-and-nft/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/local-esdt-and-nft/wasm/Cargo.toml b/contracts/feature-tests/composability/local-esdt-and-nft/wasm/Cargo.toml index cf28b7b627..68b9600e94 100644 --- a/contracts/feature-tests/composability/local-esdt-and-nft/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/local-esdt-and-nft/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/promises-features/Cargo.toml b/contracts/feature-tests/composability/promises-features/Cargo.toml index eaba0890d1..b4b76d4461 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -12,10 +12,10 @@ path = "src/promises_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" features = ["promises"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index 0c8582ef90..beb219c343 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index 003fa6fa5a..a79cf338d6 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/proxy-test-first/Cargo.toml b/contracts/feature-tests/composability/proxy-test-first/Cargo.toml index 6d577ea03b..dba02cf2b9 100644 --- a/contracts/feature-tests/composability/proxy-test-first/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/Cargo.toml @@ -12,10 +12,10 @@ path = "src/proxy-test-first.rs" hex-literal = "0.3.1" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml index 3be6e7eea4..3126bb9a03 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml index 7a5532123e..6cf1f88baa 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/proxy-test-second/Cargo.toml b/contracts/feature-tests/composability/proxy-test-second/Cargo.toml index eca1ee784d..e6a7fae307 100644 --- a/contracts/feature-tests/composability/proxy-test-second/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = "src/proxy-test-second.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml index df96a665d4..4c2dbab062 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml index 565d084609..f1cb091ddb 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/recursive-caller/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/Cargo.toml index 0e53064758..4856fdc354 100644 --- a/contracts/feature-tests/composability/recursive-caller/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/Cargo.toml @@ -12,9 +12,9 @@ path = "src/recursive_caller.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml index 2aa7b7ab32..62ee1582f7 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index d94e37ba9e..8c1c8dece3 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/transfer-role-features/Cargo.toml b/contracts/feature-tests/composability/transfer-role-features/Cargo.toml index 89ba23589f..b3f957525c 100644 --- a/contracts/feature-tests/composability/transfer-role-features/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/Cargo.toml @@ -12,13 +12,13 @@ path = "src/lib.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml index 154b5c4ca3..eaee21f1d0 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml index d01ce1f2ad..6f84125d28 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index 8dee44bee7..550d6022f5 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,10 +10,10 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" features = ["promises"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index f48ad8e1d6..653238557d 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml index a103fee209..664b737624 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.toml b/contracts/feature-tests/composability/vault/wasm/Cargo.toml index 36fe5ce6ae..045f6ccf0f 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/Cargo.toml b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/Cargo.toml index cea14319d2..50956fbf6b 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/Cargo.toml @@ -12,10 +12,10 @@ path = "src/crowdfunding_erc20.rs" path = "../erc20" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/meta/Cargo.toml b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/meta/Cargo.toml index 0bbbb2da41..bdf8b56322 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/wasm/Cargo.toml b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/wasm/Cargo.toml index 4c3dc9a7d0..d81039680c 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/Cargo.toml index cdf3c5ccde..bbea41713c 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/Cargo.toml @@ -13,10 +13,10 @@ path = "src/lib.rs" path = "../erc1155" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/meta/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/meta/Cargo.toml index ffcd4b17cd..008259bc1e 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/wasm/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/wasm/Cargo.toml index 89022aed60..4b10615348 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/Cargo.toml index 585c4ca020..6860aca657 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/meta/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/meta/Cargo.toml index 4cc4a3c4a7..419f68f39e 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/wasm/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/wasm/Cargo.toml index 1f0a3a1282..875542f592 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155/Cargo.toml index 149c9afdbe..6b819dc43b 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/Cargo.toml @@ -9,12 +9,12 @@ publish = false path = "src/erc1155.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" [dev-dependencies.erc1155-user-mock] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml index 54ad1aa5d3..8e8f096b15 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml index 6e4c7761f4..f7e741fb73 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/erc-style-contracts/erc20/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc20/Cargo.toml index 21ef5f580d..c8e467d860 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/erc20.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml index 2ef9abc02a..42583c300e 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml index f6b6c3dd7c..de56ec3fc5 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/erc-style-contracts/erc721/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc721/Cargo.toml index 3ac0f525b8..c822f7c9a6 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/Cargo.toml @@ -10,9 +10,9 @@ path = "src/erc721.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml index aa9c5d18e0..77a81cc97c 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml index e885377606..59ecbd4900 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -21,5 +21,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/Cargo.toml b/contracts/feature-tests/erc-style-contracts/lottery-erc20/Cargo.toml index 7d0d05a970..bca3fa5120 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/Cargo.toml @@ -12,10 +12,10 @@ path = "src/lottery.rs" path = "../erc20" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/meta/Cargo.toml b/contracts/feature-tests/erc-style-contracts/lottery-erc20/meta/Cargo.toml index 93c8dc6d3d..c5815ff2d2 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/meta" diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/wasm/Cargo.toml b/contracts/feature-tests/erc-style-contracts/lottery-erc20/wasm/Cargo.toml index e52b2b37a1..cdc4023be4 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/wasm/Cargo.toml @@ -22,5 +22,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../../framework/wasm-adapter" diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 845de6462c..95fef57b7a 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/esdt_system_sc_mock.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml index d8d71b2849..7ee7c96351 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml index e89bf73fbf..ef10211d94 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/formatted-message-features/Cargo.toml b/contracts/feature-tests/formatted-message-features/Cargo.toml index 46404782b4..f0a23471ac 100644 --- a/contracts/feature-tests/formatted-message-features/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/formatted_message_features.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml index eb187e9d1b..c429655990 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,5 +11,5 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 29e9451baa..d906b1b347 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -24,5 +24,5 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index 69d8a7cf94..fa2dce145c 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -8,13 +8,13 @@ publish = false [lib] path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" features = ["managed-map"] [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies.esdt-system-sc-mock] diff --git a/contracts/feature-tests/managed-map-features/meta/Cargo.toml b/contracts/feature-tests/managed-map-features/meta/Cargo.toml index 7a3689ee82..a87c06a487 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index bea8803635..53366d6a16 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/multi-contract-features/Cargo.toml b/contracts/feature-tests/multi-contract-features/Cargo.toml index cebe465864..57d0fe0243 100644 --- a/contracts/feature-tests/multi-contract-features/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/Cargo.toml @@ -12,9 +12,9 @@ path = "src/multi_contract_features.rs" example_feature = [] [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml index 7d9e5cc8cb..81bfa816cd 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-alt-impl/Cargo.toml b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-alt-impl/Cargo.toml index da29d40281..04069ded03 100644 --- a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-alt-impl/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-alt-impl/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-example-feature/Cargo.toml b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-example-feature/Cargo.toml index bb1d20b631..be2665e950 100644 --- a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-example-feature/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-example-feature/Cargo.toml @@ -18,7 +18,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-features-view/Cargo.toml b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-features-view/Cargo.toml index e6958fa3d1..57a6f0c4a3 100644 --- a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-features-view/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-features-view/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml index f8f4f341f4..aeb1f81071 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/panic-message-features/Cargo.toml b/contracts/feature-tests/panic-message-features/Cargo.toml index b3dc2c5fb6..04d101689f 100644 --- a/contracts/feature-tests/panic-message-features/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/panic_features.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/panic-message-features/meta/Cargo.toml b/contracts/feature-tests/panic-message-features/meta/Cargo.toml index f1df9d36dd..8918cb6e4b 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index 76daee6f37..8159b2e42d 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index f08d7b963e..59afaa29fc 100644 --- a/contracts/feature-tests/payable-features/Cargo.toml +++ b/contracts/feature-tests/payable-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/payable_features.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index 9f38ad569e..16b8883373 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index fe2224b2d6..1fb3aacb58 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/rust-snippets-generator-test/Cargo.toml b/contracts/feature-tests/rust-snippets-generator-test/Cargo.toml index 3ce2b01099..02b1b6eb71 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/rust-snippets-generator-test/interact-rs/Cargo.toml b/contracts/feature-tests/rust-snippets-generator-test/interact-rs/Cargo.toml index f4dd9f9d8b..dc7c8feb7d 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/interact-rs/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/interact-rs/Cargo.toml @@ -13,7 +13,7 @@ path = "src/interactor_main.rs" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/snippets" # [workspace] diff --git a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml index 775f86bf2b..a82265a017 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/rust-snippets-generator-test/src/lib.rs b/contracts/feature-tests/rust-snippets-generator-test/src/lib.rs index e4eb5a9a98..b354ea1680 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/src/lib.rs +++ b/contracts/feature-tests/rust-snippets-generator-test/src/lib.rs @@ -13,7 +13,7 @@ multiversx_sc::derive_imports!(); // Additionally, we also have to update the interact-rs snippets manually to add relative paths: // [dependencies.multiversx-sc-snippets] -// version = "0.43.2" +// version = "0.43.3" // path = "../../../../framework/snippets" #[derive( diff --git a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml index b5395a3cda..3788e1218a 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/rust-testing-framework-tester/Cargo.toml b/contracts/feature-tests/rust-testing-framework-tester/Cargo.toml index 484c1e537f..856f1e5922 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" publish = false [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml index d1d4538783..36416ec05d 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,5 +8,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml index 622efaea8f..c1954256d1 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index 11f26d45fe..9e308bae2f 100644 --- a/contracts/feature-tests/use-module/Cargo.toml +++ b/contracts/feature-tests/use-module/Cargo.toml @@ -9,17 +9,17 @@ publish = false path = "src/use_module.rs" [dependencies.multiversx-sc-modules] -version = "0.43.2" +version = "0.43.3" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index 4b2e16a9ca..24889dcf87 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,5 +9,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 4bac7ddd44..a80bf4799f 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/meta" diff --git a/contracts/feature-tests/use-module/use_module_expected_main.abi.json b/contracts/feature-tests/use-module/use_module_expected_main.abi.json index f93d747e30..a45287ba49 100644 --- a/contracts/feature-tests/use-module/use_module_expected_main.abi.json +++ b/contracts/feature-tests/use-module/use_module_expected_main.abi.json @@ -14,7 +14,7 @@ }, "framework": { "name": "multiversx-sc", - "version": "0.43.2" + "version": "0.43.3" } }, "docs": [ diff --git a/contracts/feature-tests/use-module/use_module_expected_view.abi.json b/contracts/feature-tests/use-module/use_module_expected_view.abi.json index cfa7e67b81..576a712092 100644 --- a/contracts/feature-tests/use-module/use_module_expected_view.abi.json +++ b/contracts/feature-tests/use-module/use_module_expected_view.abi.json @@ -14,7 +14,7 @@ }, "framework": { "name": "multiversx-sc", - "version": "0.43.2" + "version": "0.43.3" } }, "docs": [ diff --git a/contracts/feature-tests/use-module/wasm-use-module-view/Cargo.toml b/contracts/feature-tests/use-module/wasm-use-module-view/Cargo.toml index 9e39290d7e..d0e09be493 100644 --- a/contracts/feature-tests/use-module/wasm-use-module-view/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm-use-module-view/Cargo.toml @@ -17,7 +17,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/wasm/Cargo.toml b/contracts/feature-tests/use-module/wasm/Cargo.toml index 5050534249..cb59f72e93 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -19,7 +19,7 @@ panic = "abort" path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.43.2" +version = "0.43.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index 082c1cebc4..b8d51a5424 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../framework/base" diff --git a/data/codec-derive/Cargo.toml b/data/codec-derive/Cargo.toml index ac50d190f4..1d0c2c6591 100644 --- a/data/codec-derive/Cargo.toml +++ b/data/codec-derive/Cargo.toml @@ -22,6 +22,6 @@ default = ["syn/full", "syn/parsing", "syn/extra-traits"] [dependencies] proc-macro2 = "1.0.66" -quote = "1.0" +quote = "1.0.33" syn = "1.0" hex = "0.4" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index 5a0e16fc5b..4613fb8b2c 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -33,7 +33,7 @@ version = "0.2" default-features = false [dependencies.multiversx-sc-derive] -version = "=0.43.2" +version = "=0.43.3" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index 560d352c37..dda7a99e10 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -15,7 +15,7 @@ categories = ["cryptography::cryptocurrencies", "development-tools::procedural-m [dependencies] proc-macro2 = "1.0.66" -quote = "1.0" +quote = "1.0.33" syn = "1.0" hex = "0.4" radix_trie = "0.2.1" diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index 8168314d54..a0772f7b1c 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.43.2" +version = "0.43.3" edition = "2021" authors = [ @@ -45,7 +45,7 @@ convert_case = "0.6.0" hex = "0.4" [dependencies.multiversx-sc] -version = "=0.43.2" +version = "=0.43.3" path = "../base" features = ["alloc", "num-bigint", "promises"] diff --git a/framework/meta/src/cmd/contract/generate_snippets/snippet_crate_gen.rs b/framework/meta/src/cmd/contract/generate_snippets/snippet_crate_gen.rs index f467c06dce..c0ea3b936f 100644 --- a/framework/meta/src/cmd/contract/generate_snippets/snippet_crate_gen.rs +++ b/framework/meta/src/cmd/contract/generate_snippets/snippet_crate_gen.rs @@ -69,7 +69,7 @@ path = "src/{SNIPPETS_SOURCE_FILE_NAME}" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.43.2" +version = "0.43.3" # [workspace] diff --git a/framework/meta/src/version_history.rs b/framework/meta/src/version_history.rs index faf65bad25..bc24171dd8 100644 --- a/framework/meta/src/version_history.rs +++ b/framework/meta/src/version_history.rs @@ -1,7 +1,7 @@ /// The last version to be used for upgrades and templates. /// /// Should be edited every time a new version of the framework is released. -pub const LAST_VERSION: &str = "0.43.2"; +pub const LAST_VERSION: &str = "0.43.3"; /// Indicates where to stop with the upgrades. pub const LAST_UPGRADE_VERSION: &str = LAST_VERSION; @@ -47,6 +47,7 @@ pub const VERSIONS: &[&str] = &[ "0.43.0", "0.43.1", "0.43.2", + "0.43.3", ]; /// We started supporting contract templates with version 0.43.0. diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index c0ae3c2942..f9b0170fb5 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.43.2" +version = "0.43.3" edition = "2021" authors = [ @@ -40,11 +40,11 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.43.2" +version = "=0.43.3" path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.43.2" +version = "=0.43.3" path = "../meta" [dependencies.multiversx-chain-scenario-format] @@ -55,7 +55,7 @@ path = "../../sdk/scenario-format" version = "0.1.0" [dependencies.multiversx-chain-vm] -version = "=0.5.1" +version = "=0.5.2" path = "../../vm" [dependencies.multiversx-sdk] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 73b475041a..936703c01a 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.43.2" +version = "0.43.3" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.8.4" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.43.2" +version = "=0.43.3" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index b1eeee8305..f3458e494d 100644 --- a/framework/wasm-adapter/Cargo.toml +++ b/framework/wasm-adapter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.43.2" +version = "=0.43.3" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index b133af6571..9f5e2a02c0 100644 --- a/tools/mxpy-snippet-generator/Cargo.toml +++ b/tools/mxpy-snippet-generator/Cargo.toml @@ -10,7 +10,7 @@ name = "mxpy-snippet-generator" path = "src/mxpy_snippet_generator.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index 7754ee5a9f..6c322198ee 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,15 +9,15 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "0.43.2" +version = "0.43.3" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] -version = "0.5.1" +version = "0.5.2" path = "../../../vm" [dev-dependencies] diff --git a/vm/Cargo.toml b/vm/Cargo.toml index cf36c61443..19d8d9a14a 100644 --- a/vm/Cargo.toml +++ b/vm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-chain-vm" -version = "0.5.1" +version = "0.5.2" edition = "2021" authors = [ From 7eedf9ae2d40f00246087dc897c830b8f3d959a8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 8 Sep 2023 16:00:46 +0300 Subject: [PATCH 54/54] update Cargo.lock --- contracts/benchmarks/large-storage/wasm/Cargo.lock | 6 +++--- .../mappers/linked-list-repeat/wasm/Cargo.lock | 6 +++--- .../benchmarks/mappers/map-repeat/wasm/Cargo.lock | 6 +++--- .../benchmarks/mappers/queue-repeat/wasm/Cargo.lock | 6 +++--- .../benchmarks/mappers/set-repeat/wasm/Cargo.lock | 6 +++--- .../mappers/single-value-repeat/wasm/Cargo.lock | 6 +++--- .../benchmarks/mappers/vec-repeat/wasm/Cargo.lock | 6 +++--- contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock | 6 +++--- contracts/benchmarks/str-repeat/wasm/Cargo.lock | 6 +++--- contracts/core/price-aggregator/wasm/Cargo.lock | 10 +++++----- contracts/examples/adder/wasm/Cargo.lock | 6 +++--- .../examples/bonding-curve-contract/wasm/Cargo.lock | 8 ++++---- contracts/examples/check-pause/wasm/Cargo.lock | 8 ++++---- contracts/examples/crowdfunding-esdt/wasm/Cargo.lock | 6 +++--- contracts/examples/crypto-bubbles/wasm/Cargo.lock | 6 +++--- .../crypto-kitties/kitty-auction/wasm/Cargo.lock | 6 +++--- .../crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock | 6 +++--- .../crypto-kitties/kitty-ownership/wasm/Cargo.lock | 6 +++--- contracts/examples/crypto-zombies/wasm/Cargo.lock | 6 +++--- contracts/examples/digital-cash/wasm/Cargo.lock | 6 +++--- contracts/examples/empty/wasm/Cargo.lock | 6 +++--- .../examples/esdt-transfer-with-fee/wasm/Cargo.lock | 6 +++--- contracts/examples/factorial/wasm/Cargo.lock | 6 +++--- contracts/examples/fractional-nfts/wasm/Cargo.lock | 8 ++++---- contracts/examples/lottery-esdt/wasm/Cargo.lock | 6 +++--- .../examples/multisig/wasm-multisig-full/Cargo.lock | 8 ++++---- .../examples/multisig/wasm-multisig-view/Cargo.lock | 8 ++++---- contracts/examples/multisig/wasm/Cargo.lock | 8 ++++---- contracts/examples/nft-minter/wasm/Cargo.lock | 6 +++--- contracts/examples/nft-storage-prepay/wasm/Cargo.lock | 6 +++--- contracts/examples/order-book/factory/wasm/Cargo.lock | 6 +++--- contracts/examples/order-book/pair/wasm/Cargo.lock | 6 +++--- contracts/examples/ping-pong-egld/wasm/Cargo.lock | 6 +++--- contracts/examples/proxy-pause/wasm/Cargo.lock | 6 +++--- .../examples/rewards-distribution/wasm/Cargo.lock | 8 ++++---- contracts/examples/seed-nft-minter/wasm/Cargo.lock | 8 ++++---- contracts/examples/token-release/wasm/Cargo.lock | 6 +++--- .../abi-tester/wasm-abi-tester-ev/Cargo.lock | 6 +++--- contracts/feature-tests/abi-tester/wasm/Cargo.lock | 6 +++--- contracts/feature-tests/alloc-features/wasm/Cargo.lock | 6 +++--- .../wasm-basic-features-storage-bytes/Cargo.lock | 8 ++++---- contracts/feature-tests/basic-features/wasm/Cargo.lock | 8 ++++---- .../feature-tests/big-float-features/wasm/Cargo.lock | 6 +++--- .../builtin-func-features/wasm/Cargo.lock | 6 +++--- .../esdt-contract-pair/first-contract/wasm/Cargo.lock | 6 +++--- .../esdt-contract-pair/second-contract/wasm/Cargo.lock | 6 +++--- .../child/wasm/Cargo.lock | 6 +++--- .../parent/wasm/Cargo.lock | 6 +++--- .../wasm-forwarder-queue-promises/Cargo.lock | 6 +++--- .../composability/forwarder-queue/wasm/Cargo.lock | 6 +++--- .../wasm-forwarder-raw-init-async-call/Cargo.lock | 6 +++--- .../wasm-forwarder-raw-init-sync-call/Cargo.lock | 6 +++--- .../composability/forwarder-raw/wasm/Cargo.lock | 6 +++--- .../composability/forwarder/wasm/Cargo.lock | 6 +++--- .../composability/local-esdt-and-nft/wasm/Cargo.lock | 6 +++--- .../composability/promises-features/wasm/Cargo.lock | 6 +++--- .../composability/proxy-test-first/wasm/Cargo.lock | 6 +++--- .../composability/proxy-test-second/wasm/Cargo.lock | 6 +++--- .../composability/recursive-caller/wasm/Cargo.lock | 6 +++--- .../transfer-role-features/wasm/Cargo.lock | 8 ++++---- .../composability/vault/wasm-vault-promises/Cargo.lock | 6 +++--- .../feature-tests/composability/vault/wasm/Cargo.lock | 6 +++--- .../crowdfunding-erc20/wasm/Cargo.lock | 6 +++--- .../erc1155-marketplace/wasm/Cargo.lock | 6 +++--- .../erc1155-user-mock/wasm/Cargo.lock | 6 +++--- .../erc-style-contracts/erc1155/wasm/Cargo.lock | 6 +++--- .../erc-style-contracts/erc20/wasm/Cargo.lock | 6 +++--- .../erc-style-contracts/erc721/wasm/Cargo.lock | 6 +++--- .../erc-style-contracts/lottery-erc20/wasm/Cargo.lock | 6 +++--- .../feature-tests/esdt-system-sc-mock/wasm/Cargo.lock | 6 +++--- .../formatted-message-features/wasm/Cargo.lock | 6 +++--- .../feature-tests/managed-map-features/wasm/Cargo.lock | 6 +++--- .../wasm-multi-contract-alt-impl/Cargo.lock | 6 +++--- .../wasm-multi-contract-example-feature/Cargo.lock | 6 +++--- .../wasm-multi-contract-features-view/Cargo.lock | 6 +++--- .../multi-contract-features/wasm/Cargo.lock | 6 +++--- .../panic-message-features/wasm/Cargo.lock | 6 +++--- .../feature-tests/payable-features/wasm/Cargo.lock | 6 +++--- .../rust-snippets-generator-test/wasm/Cargo.lock | 6 +++--- .../rust-testing-framework-tester/wasm/Cargo.lock | 6 +++--- .../use-module/wasm-use-module-view/Cargo.lock | 8 ++++---- contracts/feature-tests/use-module/wasm/Cargo.lock | 8 ++++---- 82 files changed, 261 insertions(+), 261 deletions(-) diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.lock b/contracts/benchmarks/large-storage/wasm/Cargo.lock index eea5bfe3b0..278c1ec154 100755 --- a/contracts/benchmarks/large-storage/wasm/Cargo.lock +++ b/contracts/benchmarks/large-storage/wasm/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock index eaba15607b..8441d72c02 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock @@ -89,7 +89,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock index b0082e6b5b..81cb62d0df 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock @@ -89,7 +89,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock index 9ff62da13b..5eb1439efc 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock @@ -73,7 +73,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock index 2ce171f21e..76dfc2d1b5 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock @@ -73,7 +73,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock index d755e04394..46ef3c6db8 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock @@ -73,7 +73,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock index beee8cf26e..f5884ad51f 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock @@ -73,7 +73,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock index ac30ea1bd2..1bc6a5f8ac 100755 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.lock b/contracts/benchmarks/str-repeat/wasm/Cargo.lock index af57c4729b..699a1ac407 100755 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/core/price-aggregator/wasm/Cargo.lock b/contracts/core/price-aggregator/wasm/Cargo.lock index 23a26318f9..e4f9cbcf1c 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.lock +++ b/contracts/core/price-aggregator/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "arrayvec", "multiversx-sc", @@ -83,7 +83,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -113,7 +113,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -124,14 +124,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index a7bde86669..7783827249 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock index 3105c1bd98..a81fd11f36 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock @@ -82,7 +82,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,14 +123,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/check-pause/wasm/Cargo.lock b/contracts/examples/check-pause/wasm/Cargo.lock index 2cd551c7bb..533226d6db 100644 --- a/contracts/examples/check-pause/wasm/Cargo.lock +++ b/contracts/examples/check-pause/wasm/Cargo.lock @@ -82,7 +82,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,14 +123,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock index 00edf25db0..037db94109 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.lock b/contracts/examples/crypto-bubbles/wasm/Cargo.lock index 88a09a3717..c4cc81c87b 100755 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.lock +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock index b0402e82d5..cf6d3a4449 100755 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock @@ -110,7 +110,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -140,7 +140,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -151,7 +151,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock index 2271b72425..8c7a3c5b83 100755 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock @@ -91,7 +91,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -121,7 +121,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -132,7 +132,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock index ef40682736..bd9b191034 100755 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock @@ -101,7 +101,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -131,7 +131,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -142,7 +142,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index a4f238896c..1e26ef4099 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/digital-cash/wasm/Cargo.lock b/contracts/examples/digital-cash/wasm/Cargo.lock index ee61acef8b..30d389f925 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.lock +++ b/contracts/examples/digital-cash/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/empty/wasm/Cargo.lock b/contracts/examples/empty/wasm/Cargo.lock index f101bfe96a..5ab4989f9a 100755 --- a/contracts/examples/empty/wasm/Cargo.lock +++ b/contracts/examples/empty/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock index 605462a2c0..a4eae179c5 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/factorial/wasm/Cargo.lock b/contracts/examples/factorial/wasm/Cargo.lock index 7a9d5a2288..9a6fd91433 100755 --- a/contracts/examples/factorial/wasm/Cargo.lock +++ b/contracts/examples/factorial/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.lock b/contracts/examples/fractional-nfts/wasm/Cargo.lock index 5f55cda271..5c8690758f 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.lock +++ b/contracts/examples/fractional-nfts/wasm/Cargo.lock @@ -82,7 +82,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,14 +123,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.lock b/contracts/examples/lottery-esdt/wasm/Cargo.lock index 5ab72ffa5b..f3deac1ba5 100755 --- a/contracts/examples/lottery-esdt/wasm/Cargo.lock +++ b/contracts/examples/lottery-esdt/wasm/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock index c2b47b70ad..9a9cb1831c 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,14 +123,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock index 836e87861c..996a48e0ee 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,14 +123,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm/Cargo.lock b/contracts/examples/multisig/wasm/Cargo.lock index c6e8aeac03..50d624f130 100755 --- a/contracts/examples/multisig/wasm/Cargo.lock +++ b/contracts/examples/multisig/wasm/Cargo.lock @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,14 +123,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-minter/wasm/Cargo.lock b/contracts/examples/nft-minter/wasm/Cargo.lock index e151ce3166..16f6ea5a9d 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.lock +++ b/contracts/examples/nft-minter/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock index 736dac3313..be379c9034 100755 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/factory/wasm/Cargo.lock b/contracts/examples/order-book/factory/wasm/Cargo.lock index 43271e0341..83802a9734 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.lock +++ b/contracts/examples/order-book/factory/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/pair/wasm/Cargo.lock b/contracts/examples/order-book/pair/wasm/Cargo.lock index 74246fed59..c8f9338f80 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.lock +++ b/contracts/examples/order-book/pair/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.lock b/contracts/examples/ping-pong-egld/wasm/Cargo.lock index 323e0e2509..6774507a13 100755 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.lock +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/proxy-pause/wasm/Cargo.lock b/contracts/examples/proxy-pause/wasm/Cargo.lock index bf9bd016fb..029d855af7 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.lock +++ b/contracts/examples/proxy-pause/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.lock b/contracts/examples/rewards-distribution/wasm/Cargo.lock index c0f1d15a4e..3c1b7cce26 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.lock +++ b/contracts/examples/rewards-distribution/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,14 +107,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.lock b/contracts/examples/seed-nft-minter/wasm/Cargo.lock index b9862921ac..c08ef1fe8c 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.lock +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,14 +107,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/token-release/wasm/Cargo.lock b/contracts/examples/token-release/wasm/Cargo.lock index 01d49d96fb..c259bb4cf4 100644 --- a/contracts/examples/token-release/wasm/Cargo.lock +++ b/contracts/examples/token-release/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/abi-tester/wasm-abi-tester-ev/Cargo.lock b/contracts/feature-tests/abi-tester/wasm-abi-tester-ev/Cargo.lock index efd5fe87a8..7fca1bca31 100644 --- a/contracts/feature-tests/abi-tester/wasm-abi-tester-ev/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm-abi-tester-ev/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.lock b/contracts/feature-tests/abi-tester/wasm/Cargo.lock index 01347efab7..7be39e8a95 100755 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.lock b/contracts/feature-tests/alloc-features/wasm/Cargo.lock index cd3980e975..756ab122af 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/basic-features/wasm-basic-features-storage-bytes/Cargo.lock b/contracts/feature-tests/basic-features/wasm-basic-features-storage-bytes/Cargo.lock index e9271583ce..13690b4f4f 100644 --- a/contracts/feature-tests/basic-features/wasm-basic-features-storage-bytes/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm-basic-features-storage-bytes/Cargo.lock @@ -82,7 +82,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,14 +123,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.lock b/contracts/feature-tests/basic-features/wasm/Cargo.lock index 0e3b30ade3..f9e00776bf 100755 --- a/contracts/feature-tests/basic-features/wasm/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm/Cargo.lock @@ -82,7 +82,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,14 +123,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.lock b/contracts/feature-tests/big-float-features/wasm/Cargo.lock index 55eead9212..179a6601f2 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.lock +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock index e740b5e0ee..3ddb3784fa 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/wasm/Cargo.lock b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/wasm/Cargo.lock index 970e2afeb8..a9d07faea6 100755 --- a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/esdt-contract-pair/second-contract/wasm/Cargo.lock b/contracts/feature-tests/composability/esdt-contract-pair/second-contract/wasm/Cargo.lock index 0616618700..8240c8090d 100755 --- a/contracts/feature-tests/composability/esdt-contract-pair/second-contract/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/esdt-contract-pair/second-contract/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/wasm/Cargo.lock b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/wasm/Cargo.lock index 7dcdeb828b..350a434368 100755 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/wasm/Cargo.lock b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/wasm/Cargo.lock index 1abcbc7445..ab27a7192d 100755 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/wasm/Cargo.lock @@ -73,7 +73,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder-queue/wasm-forwarder-queue-promises/Cargo.lock b/contracts/feature-tests/composability/forwarder-queue/wasm-forwarder-queue-promises/Cargo.lock index 6ad7c4722a..5b7d0082d7 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm-forwarder-queue-promises/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm-forwarder-queue-promises/Cargo.lock @@ -82,7 +82,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,7 +123,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock index 8e468272f3..a01c3e1ffb 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock @@ -82,7 +82,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,7 +123,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/Cargo.lock b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/Cargo.lock index 7d1dddc98c..0d91f16f55 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-sync-call/Cargo.lock b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-sync-call/Cargo.lock index c19eb5b650..e7c1cf937d 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-sync-call/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-sync-call/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock index 2d58a30887..ae85dffaa3 100755 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock index c670130fa8..7ed66fdc24 100755 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock @@ -82,7 +82,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -123,7 +123,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/local-esdt-and-nft/wasm/Cargo.lock b/contracts/feature-tests/composability/local-esdt-and-nft/wasm/Cargo.lock index 1d67aa85c9..a18f951395 100755 --- a/contracts/feature-tests/composability/local-esdt-and-nft/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/local-esdt-and-nft/wasm/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock index 97127861b5..21625ddebc 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock index b413939cf3..04584af7d7 100755 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock index 778ca128bb..ab4e494a68 100755 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock index 39571c3118..e10aa57696 100755 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock index ff4d121da3..a23ba601cc 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,14 +107,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock index 583ee90a0c..c4062c7954 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.lock b/contracts/feature-tests/composability/vault/wasm/Cargo.lock index ba87b0809f..777b222235 100755 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/wasm/Cargo.lock b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/wasm/Cargo.lock index bfa0c571fb..2aa275e960 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/wasm/Cargo.lock @@ -89,7 +89,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/wasm/Cargo.lock b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/wasm/Cargo.lock index 98ffa19a4d..7d780cec8f 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/wasm/Cargo.lock @@ -89,7 +89,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/wasm/Cargo.lock b/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/wasm/Cargo.lock index 060f8eef27..53d78c69e5 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155-user-mock/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock index c5161caa16..1e7bf625df 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock index 2e58c32f4e..cd93e7b6eb 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock index 6537998ba5..1ff57bad5f 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/wasm/Cargo.lock b/contracts/feature-tests/erc-style-contracts/lottery-erc20/wasm/Cargo.lock index 17c8be811e..305a0b22e7 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/wasm/Cargo.lock @@ -89,7 +89,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock index e66808af7e..19cc556144 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock index 6971144557..8defa9ea3d 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock @@ -81,7 +81,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock index b021f8eb96..b06da541e6 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-alt-impl/Cargo.lock b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-alt-impl/Cargo.lock index 6dd1a7b520..5a7fbcb459 100644 --- a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-alt-impl/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-alt-impl/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-example-feature/Cargo.lock b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-example-feature/Cargo.lock index b916820495..7d3ce5f9c5 100644 --- a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-example-feature/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-example-feature/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-features-view/Cargo.lock b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-features-view/Cargo.lock index 290d27d107..98277515a4 100644 --- a/contracts/feature-tests/multi-contract-features/wasm-multi-contract-features-view/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm-multi-contract-features-view/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock index 10fe48a69f..b2447fc0ce 100755 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock index 3ad804b093..0f70383512 100755 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.lock b/contracts/feature-tests/payable-features/wasm/Cargo.lock index b651f79bf8..e02443c6ea 100755 --- a/contracts/feature-tests/payable-features/wasm/Cargo.lock +++ b/contracts/feature-tests/payable-features/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock index 445f42dfc5..e9908205d4 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock index 073717612a..96909d2271 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,7 +107,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/use-module/wasm-use-module-view/Cargo.lock b/contracts/feature-tests/use-module/wasm-use-module-view/Cargo.lock index 2499d7e91d..c65603b01d 100644 --- a/contracts/feature-tests/use-module/wasm-use-module-view/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm-use-module-view/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,14 +107,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/use-module/wasm/Cargo.lock b/contracts/feature-tests/use-module/wasm/Cargo.lock index f5bef32c2f..2fc1dfc607 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm/Cargo.lock @@ -66,7 +66,7 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "multiversx-sc" -version = "0.43.2" +version = "0.43.3" dependencies = [ "bitflags", "hashbrown", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.43.2" +version = "0.43.3" dependencies = [ "hex", "proc-macro2", @@ -107,14 +107,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.43.2" +version = "0.43.3" dependencies = [ "multiversx-sc", ]